NHibernate:eager-reload瞬态对象深嵌套子属性

时间:2009-09-10 12:34:34

标签: nhibernate

我想在Session中保留一个实体,由用户在几个页面上配置。这个实体加载了NHibernate,其中一些属性/集合是延迟加载的。说:

  
      
  • 会话[“订单”] =新订单(productRepository.Get(id))
  •   
  • 在下一页上,获取Session [“order”]并现在使用它
  •   

但是,此时订单还可以,但是它的Product(和嵌套的东西)已经坏了,因为它们在不同的会话中被延迟加载。

是否有可能告诉NHibernate我想急切加载我的瞬态订单属性到最深层次?或者,唯一的解决方案是在当时急切加载 productRepository.Get(ID) ?喜欢, Session.LoadNestedProperties(order,Eager);

更新:http://www.ribbing.net/index.php?option=com_content&task=view&id=35&Itemid=1似乎解决了这个问题。但是我不确定反射是否很好......

1 个答案:

答案 0 :(得分:0)

你可以急切地用你需要的对象加载所有图形,这有点棘手。

或者您可以尝试以下方法:

我认为您的订单只有一个产品。此产品是您的问题,因为当用户访问第二页时它变为分离的对象。你可以使用类似的东西:

session.Update(myorder.Product)

将Product实例重新附加到当前会话。之后,延迟加载应该可以正常工作。