首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >当存在外键但引用的行不存在时,是否可以避免使用NHibernate.ObjectNotFoundException?

当存在外键但引用的行不存在时,是否可以避免使用NHibernate.ObjectNotFoundException?
EN

Stack Overflow用户
提问于 2009-03-06 12:03:51
回答 3查看 7.4K关注 0票数 18

我正在使用NHibernate从遗留数据库中提取一些数据,我发现有几种情况存在外键,但引用的行已被删除。

当我进行NHibernate映射时(使用Fluent NHibernate,如下所示:

代码语言:javascript
复制
References(d => d.Group)
    .WithColumns("groupId", "dataset")
    .SetAttribute("lazy", "true");

在加载根对象时,我得到了Group的一个单元化代理,当我尝试使用它时,后面跟着一个ObjectNotFoundException

如果我禁用了延迟加载,那么在加载根目录时我会立即得到一个ObjectNotFoundException

因此:有没有办法让NHibernate在加载根目录时使Group为空?或者,有没有可能以某种方式检查被单一化的代理,以查看它是否会成功加载行?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-03-09 11:42:35

我找到了解决方案here -我需要添加

代码语言:javascript
复制
.SetAttribute("not-found", "ignore");

映射。

票数 16
EN

Stack Overflow用户

发布于 2009-04-07 19:19:14

您是否验证了您引用的属性仍在延迟加载?为了让NHibernate延迟加载引用,它需要确保引用不为空。当您设置not-found="ignore“时,您间接地告诉NHibernate引用可能不存在,从而阻止not NULL约束有效。在上面描述的情况下,您不会遇到错误,但您可能会观察到一个对数据库的紧急调用,以加载您的组。

票数 2
EN

Stack Overflow用户

发布于 2013-05-08 16:12:28

在我正在开发的应用程序上设置

代码语言:javascript
复制
lazy="proxy" 

解决了这个问题。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/618615

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档