2013-07-17 27 views
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;       
       } 
      } 
    } 

回答

1

我可能没有正确地理解你的问题,因为它是非常简单的,如果你已经知道,有一个PersistenceContext,但在这里你去:

ICollection entities = _session 
    .GetSessionImplementation() 
    .PersistenceContext 
    .EntityEntries 
    .Keys; 
+0

它返回密钥的EntityEntry对象。我想要我已知类型的对象。即我entites类的对象。 – Deepak

+0

@Deepak仔细查看我的代码。我正在访问'EntityEntries'字典的'Keys'属性。这个集合实际上包含实体对象,因为它们是这个字典中的键('EntityEntry'对象是值)。 – cremor

+0

谢谢....我明白了。钥匙本身就是我的对象.... – Deepak

相关问题