Ошибка отложенной загрузки Nhibernate на сессии. - PullRequest
0 голосов
/ 19 марта 2012

Я получаю на свой контроллер некоторое значение int, которое я использую для получения сущности. У этого объекта есть List Collection, который мне нужно загрузить вместе с моим объектом. Я не могу получить доступ к методу Fetch в сессии. Получите, поэтому я не знаю, как достичь. Когда, на мой взгляд, я пытался получить доступ к своей коллекции, как сущность. Коллекция выдает ошибку, ни один сеанс или сеанс не был закрыт

Вот мой код

public ActionResult Details(int id)
{
   MyDomain.Property data = null;
   using (//open session)
   {
      using (//using transaction)
      {
          data = session.Get<MyDomain.Property>(id);                    
          //I need to load Photo() collection. 
          transaction.Commit();
      }
   }
   return PartialView("DetailsPartial", data);        
}

1 Ответ

1 голос
/ 19 марта 2012

У вашей сущности есть свойство коллекции с прокси (не реальная коллекция). Когда вы закрываете сессию, вы не можете использовать ленивую загрузку, поэтому вам нужно получить реальные объекты коллекции. Вы должны получить его с запросом:

Session.QueryOver<Entity>()
 .Where(entity => entity.Id == id)
 .Fetch(entity => entity.CollectionProperty).Eager
.SingleOrDefault<Entity>();
...