2013-07-17 2 views
0

현재 세션에로드 된 모든 영구 객체를 원합니다.현재 세션에로드 된 모든 객체 가져 오기

세션과 관련된 지속적인 컨텍스트 캐시에 대해 알고 있으며 현재 세션에로드 된 모든 개체의 사전을 포함합니다. IPersistenceContext 캐시에로드 된 모든 개체를 알 수있는 방법을 알려줄 수 있습니까?

// 여기에

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 있다는 것을 알고있는 경우는 매우 간단하기 때문에 제대로 질문을 이해하지 수있는 우리의 NHibernate에 세션 공장을 만들 수 있지만 당신은 갈 :

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

그 키에 대한 EntityEntry 개체를 반환합니다. 내 알려진 유형의 물건을 원해. 즉 내 entites 클래스의 개체. – Deepak

+0

@Deepak 제 코드를 좀 더 자세히보세요. 'EntityEntries' 사전의'Keys' 속성에 접근하고 있습니다. 이 콜렉션은 실제로 엔티티 오브젝트를 포함하고 있습니다. 왜냐하면 그것들은이 사전의 키이기 때문입니다 ('EntityEntry' 오브젝트는 값입니다). – cremor

+0

고마워 .... 알았어. 열쇠 자체는 내 물건입니다 .... – Deepak