NHibernate - Как перебрать постоянные объекты, прикрепленные к сеансу? - PullRequest
3 голосов
/ 23 сентября 2010

Мне нужно проверить набор связанных сущностей, которые будут сохранены, если я вызову Flush () в данном сеансе. (Я пишу код, который обращается к Session как часть общего конвейера перед сохранением, и его можно использовать в любом количестве контекстов.)

Мне хочется, чтобы был такой метод, как

mySession.GetPersistentEntities ()

чтобы я мог их осмотреть и выполнить некоторую предварительную обработку.

Кто-нибудь знает способ сделать это?

Спасибо

Джеф

Ответы [ 2 ]

4 голосов
/ 23 сентября 2010

Нет, ISession NHibernate не раскрывает ничего подобного.Вы можете:

  • Отслеживать эти экземпляры самостоятельно (не рекомендуется)
  • Использовать стандартные механизмы NHibernate:
    • Прослушиватели событий (например, IFlushEventListener, ISaveOrUpdateEventListener)
    • Перехватчики (IInceptceptor.OnFlushDirty (), OnSave ())
2 голосов
/ 15 июня 2011

Вы могли бы немного взломать контекст сеанса:

ISession session;
var sessionContext = session.GetSessionImplementation().PersistenceContext;

foreach(var entity in sessionContext.EntitiesByKey.Values)
{
  // do anything with the entity
}

Однако в вашем случае я бы использовал прослушиватели событий flush или перехватчик.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...