我在我的控制器上收到一些int,这是我用来获取实体的参数。 这个实体有List Collection,我需要与我的实体一起加载。 我无法访问session.Fet中的Fetch方法,所以我不知道如何实现。 在我的视图中,我尝试访问我的集合,如entity.Collection,它会抛出错误,没有会话或会话已关闭
这是我的代码
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);
}
答案 0 :(得分:1)
您的实体拥有一个带有代理(非真实集合)的集合属性。当您关闭会话时,您不能使用延迟加载,因此,您需要获取真正的集合对象。 你应该通过查询得到它:
Session.QueryOver<Entity>()
.Where(entity => entity.Id == id)
.Fetch(entity => entity.CollectionProperty).Eager
.SingleOrDefault<Entity>();