powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Nhibernate, CreateCriteria
9 сообщений из 9, страница 1 из 1
Nhibernate, CreateCriteria
    #35779703
acc2003
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Курю доки, туплю и ничего не получается.

C помощью этой функции получаю список обьектов типа Entity:
Код: plaintext
1.
2.
3.
public List<Entity> GetList()
{
     return (List<Entity>)session.CreateCriteria(typeof(Entity)).List<Entity>();
}

все работает для первого раза.
первый раз получаем список - ок.
в базе делаем изменения - выдает тот-же самый список, что и до изменений в базе.

Вопрос.
Как сделать так, что-бы функция возвращала всегда обновленный список, включающий изменения в базе?

Flush() перед
return (List<Entity>)session.CreateCriteria(typeof(Entity)).List<Entity>();
не помогает, вроде.
...
Рейтинг: 0 / 0
Nhibernate, CreateCriteria
    #35779742
Фотография Нахлобуч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сессия вечно открыта? Кэш второго уровня используется?
...
Рейтинг: 0 / 0
Nhibernate, CreateCriteria
    #35779770
acc2003
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нахлобуч,

1. сессия открыта на все время существования обьекта:
public class EntityManager<Entity> : IEntityManager<Entity>

в котором public List<Entity> GetList() -- один из методов

2. где это можно выяснить?
сделал так -
session.CacheMode = CacheMode.Ignore;
не помогло, вроде.
...
Рейтинг: 0 / 0
Nhibernate, CreateCriteria
    #35779919
acc2003
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нахлобуч,

А можно каким-то другим способом получить List<Entity> для всего списка Entity в базе?
...
Рейтинг: 0 / 0
Nhibernate, CreateCriteria
    #35780015
Фотография Нахлобуч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
acc20031. сессия открыта на все время существования обьекта:
в котором public List<Entity> GetList() -- один из методов
Попробуй сделать session.Clear() (это заплатка).
acc2003
2. где это можно выяснить? В конфиге.
...
Рейтинг: 0 / 0
Nhibernate, CreateCriteria
    #35780064
acc2003
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нахлобуч,

С заплаткой все заработало.

А сессию я открываю вот так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
    abstract class NHConfig
    {
        private static Configuration cfg = null;

        public static NHibernate.Cfg.Configuration GetConfig()
        {
            if (cfg == null)
            {
                cfg = new Configuration();
                cfg.AddAssembly("catibll");
                cfg.SetProperty("connection.connection_string", ProjectSettings.Current.ConnectionString());
            }

            return cfg;
        }
    }


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
    abstract public class NHFactory
    {
        private static NHibernate.ISessionFactory factory = null;

        public static NHibernate.ISessionFactory GetFactory()
        {
            if (factory == null)
            {
                factory = NHConfig.GetConfig().BuildSessionFactory();
            }

            return factory;
        } 
    }

Код: plaintext
session = NHFactory.GetFactory().OpenSession();

Именно с таким подходом подводных косяков нигде не может быть?
И по поводу кэша второго уровня ничего не указывается, т.е., похоже используются установки "по умолчанию".
...
Рейтинг: 0 / 0
Nhibernate, CreateCriteria
    #35780069
Фотография Нахлобуч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
acc2003Именно с таким подходом подводных косяков нигде не может быть?Именно с таким -- вагон. Возьми за правило: один запрос -- одна сессия (но будут проблемы с ленивой загрузкой в WinForms).
...
Рейтинг: 0 / 0
Nhibernate, CreateCriteria
    #35780101
acc2003
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нахлобуч,

Ок.
Везде сделаю на один запрос одну сессию.

А для повышения образования - в чем кривизна такого подхода, в двух словах, если можно.
...
Рейтинг: 0 / 0
Nhibernate, CreateCriteria
    #35780255
Фотография Нахлобуч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
acc2003А для повышения образования - в чем кривизна такого подхода, в двух словах, если можно.ISession -- однопоточный объект. Кроме того, при возникновении исключения сессия оказывается в рассогласованном состоянии.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Nhibernate, CreateCriteria
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]