实体框架的NHibernate等价物';s DbSet.Local是否适用于未刷新的实体?

实体框架的NHibernate等价物';s DbSet.Local是否适用于未刷新的实体?,nhibernate,entity-framework,Nhibernate,Entity Framework,在EntityFramework4.1(代码优先)中,DbContext中的每个数据库集都有一个.Local实体集合,这些实体已添加到上下文中,但尚未保存 在NHibernate3.1中,当我创建一个实体并保存它时,它不会提交到数据库,直到刷新会话。我可以手动调用Session.Flush,也可以在事务提交时依靠自动刷新 但是在刷新会话之前,如何查询会话中未刷新的实体?在EF中,我可以查看DbSet.Local,但在NHibernate中我看不到任何等价项。如果我丢失了对新创建实体的引用,但我的

在EntityFramework4.1(代码优先)中,DbContext中的每个数据库集都有一个.Local实体集合,这些实体已添加到上下文中,但尚未保存

在NHibernate3.1中,当我创建一个实体并保存它时,它不会提交到数据库,直到刷新会话。我可以手动调用Session.Flush,也可以在事务提交时依靠自动刷新


但是在刷新会话之前,如何查询会话中未刷新的实体?在EF中,我可以查看DbSet.Local,但在NHibernate中我看不到任何等价项。如果我丢失了对新创建实体的引用,但我的会话仍处于打开状态且未刷新状态,那么在不提交更改并重新查询数据库的情况下,是否无法恢复该实体?

NHibernate不会公开任何类似EF的DbSet.Local的内容


实现这一点的一个简单方法是在存储库类中保留一个列表(如果没有列表,则必须创建该列表)

您可以通过
IPersistenceContext
访问实体,其中包含属性EntitiesByKey和CollectionsByKey:

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