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

moo*_*000 18 nhibernate

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

当我进行NHibernate映射时(使用Fluent NHibernate):

References(d => d.Group)
    .WithColumns("groupId", "dataset")
    .SetAttribute("lazy", "true");
Run Code Online (Sandbox Code Playgroud)

Group在加载根对象时得到一个单元化代理,然后ObjectNotFoundException在我尝试使用它时得到.

如果我禁用延迟加载,我会ObjectNotFoundException在加载root时立即获得.

因此:有没有办法让NHibernate Group在加载root时使null?或者是否有可能以某种方式检查单元化代理,以查看它是否会成功加载行?

moo*_*000 16

我在这里找到了解决方案- 我需要添加

.SetAttribute("not-found", "ignore");
Run Code Online (Sandbox Code Playgroud)

到映射.

  • 谢谢你的回答.我遇到了同样的问题.还要感谢拥有以Aphex Twin轨道命名的用户标识.顺便说一句,在我的FluentNH版本中,它是.NotFound.Ignore(). (6认同)