Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
NHibernate填充属性,但属性保持为null_Nhibernate - Fatal编程技术网

NHibernate填充属性,但属性保持为null

NHibernate填充属性,但属性保持为null,nhibernate,Nhibernate,我正试图将fetchmode设置为渴望在对象图中有两层深度的属性 DetachedCriteria homeSupportServicesPlacementInvoiceQuery = DetachedCriteria.For<HomeSupportServicesPlacementInvoice>() .SetFetchMode("VendorService", FetchMode.Eager) .SetFetchMode("Vend

我正试图将fetchmode设置为渴望在对象图中有两层深度的属性

DetachedCriteria homeSupportServicesPlacementInvoiceQuery = DetachedCriteria.For<HomeSupportServicesPlacementInvoice>()
            .SetFetchMode("VendorService", FetchMode.Eager)
            .SetFetchMode("VendorService.Vendor", FetchMode.Eager);
DetachedCriteria homeSupportServicesPlacementInvoiceQuery=DetachedCriteria.For()
.SetFetchMode(“供应商服务”,FetchMode.Eager)
.SetFetchMode(“VendorService.Vendor”,FetchMode.Eager);
NHibernate正确地填充了我的VendorService对象的值,但是,当对象移动到业务层并且不再附加到会话后,Vendor属性就不再有效。我在这个过程中注意到的另一个奇怪之处是,在quickwatch窗口中,当调试VendorService的属性时,该属性被设置为null,而该属性被设置为正确的值

我做错了什么


对于那些回答问题的人,显然可以为映射中不存在的属性设置fetchmode,该属性将被填充(您可以在调试中看到),但当您从会话中分离对象时,值将消失。

继续您提供的信息,我打赌映射对于VendorService是不正确的。
我将再次检查属性供应商是否正确映射。

代理的字段未初始化是正常的。代理继承字段,但不使用它们。它只是一个将所有调用委托给真实对象(以及属性的getter和setter)的包装器。真实对象是另一个实例,没有代理,由代理聚合。真实对象的字段应该正确初始化


我不知道序列化后为什么会丢失数据。这很可能是一个序列化问题,并且不是(非常)特定于NH。

您可以发布属性实现和映射的代码吗?VendorService的映射是什么样子的。检查物业供应商是否正确映射感谢Tom&Rippo,问题在于映射。我想我已经正确地检查了它们,但是在为我的更新删除代码时发现了问题。我可以添加我的评论作为答案吗?当然可以。我不想自己回答这个问题,因为是你和汤姆给我指出了解决办法。