2013-07-17 4 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 для ключей. Я хочу объекты моих известных типов. то есть объекты моего класса. – Deepak

+0

@Deepak Посмотрите на мой код. Я обращаюсь к свойству 'Keys' словаря EntityEntries'. Эта коллекция фактически содержит объекты сущности, потому что они являются ключами в этом словаре (объекты EntityEntry являются значениями). – cremor

+0

Спасибо .... Я понял. Ключи сами по себе являются моими объектами .... – Deepak

Смежные вопросы