0

我希望在当前会话中加载所有持久对象。

我知道与会话关联的持久上下文缓存,包含当前会话中加载的所有对象的字典。谁能告诉我如何知道加载到 IPersistenceContext 缓存中的所有对象?

// 创建我们的 NHibernate 会话工厂

    var sessionFactory = CreateSessionFactory();
    using (var session = sessionFactory.OpenSession())
    {
            Employee emp;

            // populate the database
            using (var transaction = session.BeginTransaction())
            {
               emp = session.Query<Employee>().Where(x => x.Name == "Bargin Basin").FirstOrDefault();
               var entries = session.GetSessionImplementation().PersistenceContext.EntityEntries;
               foreach (var item in entries)
               {
                    var entityEntry = entries[item];
                    //I want the objects of my type like..
                    //Employee persistedEmp = entityEntry as Employee;                        
               }
          }
    }
4

1 回答 1

1

我可能没有正确理解您的问题,因为如果您已经知道存在 PersistenceContext,这非常简单,但是您可以这样:

ICollection entities = _session
    .GetSessionImplementation()
    .PersistenceContext
    .EntityEntries
    .Keys;
于 2013-07-18T05:14:47.583 回答