Csharp/C#教程:NHibernate Prevent Lazy加载无与伦比的引用分享


NHibernate Prevent Lazy加载无与伦比的引用

我对NHibernate有一个很大的问题。 我有一个从Table1到Table2的引用,我希望NHibernate在表2中找不到相应的记录时,不要对Table2发出一个SELECT语句,我不知道,真的确实它确实不在那里。

我尝试将修饰符如.LazyLoad(Laziness.False).NotFound.Ignore()到我的引用中,但NHibernate在极端偏见中忽略了我的命令,发出了select并破坏了我的代码。

这是正确的,NHibernate试图加载“不存在”。 它必须这样做。

如上所述Ayende – NHibernate Mapping (摘录):

12)not-found是另一个遗留特性,它控制NHibernate在找到无效外键时的行为方式。 也就是说,指向不存在的实体的值。 默认情况下,这会触发错误,因为这通常表示数据库存在问题,但对于旧数据库,您可以告诉它将属性值设置为null。

正如可以在这里找到的: 使用Ignore.NotFound (提取) 延迟加载NHibernate :

当你指定.NotFound()。Ignore()时,这会强制加载实体,并且不能用.LazyLoad()覆盖。 NHibernate这样做是因为它必须确保关系存在或不存在,因为您不依赖于数据库来强制执行此操作。

在这里为什么Nhibernate不会懒惰加载我的多对一关系? ,JoséF。Romaniello说:

这是你的问题,nhibernate必须确保每个注册都有一个发票EXIST或不存在。

我强烈建议您修复数据问题并删除not-found =“ignore”属性。 这是一件坏事。

尝试

 .Not.LazyLoad(); 

而不是.LazyLoad(laziness.false);

上述就是C#学习教程:NHibernate Prevent Lazy加载无与伦比的引用分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1020004.html

(0)
上一篇 2022年1月4日
下一篇 2022年1月4日

精彩推荐