NHibernate эквивалентен DbSet.Local Entity Framework для неразделенных объектов? - PullRequest
3 голосов
/ 30 июня 2011

В Entity Framework 4.1 (Code First) каждый DbSet в DbContext имеет .Local коллекцию сущностей, которые были добавлены в контекст, но еще не сохранены.

В NHibernate 3.1, когда я создаю сущность и сохраняю ее, она не фиксируется в базе данных, пока сеанс не будет сброшен. Я могу либо вызвать Session.Flush вручную, либо положиться на автоматическую очистку при фиксации транзакции.

Но перед тем, как сеанс сбрасывается, как я могу запросить сеанс для неосуществленных объектов? В EF я мог бы взглянуть на DbSet.Local, но я не вижу ничего подобного в NHibernate. Если я потерял ссылку на вновь созданную сущность, но моя сессия все еще открыта и неактивна, нет ли способа вернуть сущность обратно без фиксации изменений и запроса базы данных?

Ответы [ 2 ]

2 голосов
/ 30 июня 2011

NHibernate не предоставляет ничего похожего на Eb DbSet.Local.

Простой способ реализовать это - сохранить список в своем классе репозитория (его нужно создать, если у вас его нет)

0 голосов
/ 30 июня 2011

Вы можете получить к сущностям через IPersistenceContext, который содержит свойства EntitiesByKey и CollectionsByKey:

ISession session = ...;    
var context = session.GetSessionImplementation().PersistenceContext();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...