2013-07-17 30 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

相關問題