Могут ли критерии NHibernate получить из кэша - PullRequest
0 голосов
/ 11 июля 2009

Я загружаю много данных в базу данных с помощью NHibernate. Когда я вставляю, я хочу проверить наличие дубликатов.

Я вызываю saveorupdate в каждом цикле, не сбрасывая сеанс.

Есть ли способ запросить этот сеанс на наличие дубликатов без очистки?

Ответы [ 2 ]

0 голосов
/ 02 ноября 2009

вы можете написать собственный перехватчик, который дает вам метод onsave со следующей подписью public override bool OnLoad (сущность объекта, идентификатор объекта, состояние объекта [], строка [] propertyNames, типы IType [])

тогда у вас может быть дублирующая логика проверки, внутри этого метода. (Т.е. сохраняя словарь всех идентификаторов, уже существующих для этого типа)

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

Configuration cfg = new Configuration();
ISaveEventListener[] stack = new ISaveEventListener[] { new MySaveListener(), new DefaultSaveEventListener() };
cfg.EventListeners.SaveEventListeners = stack;
0 голосов
/ 11 июля 2009

Возможно, вам следует попробовать интегрировать nhibernate с Spring.NET, чтобы Spring.NET могла обрабатывать сессии, создавая поддержку DAO. Надеюсь, это поможет! http://www.springframework.net/docs/1.1-RC2/reference/html/dao.html

...