使用Ignore.NotFound延迟加载NHibernate

时间:2011-04-14 12:54:24

标签: .net nhibernate fluent-nhibernate

我有一个像Candidate对象的轰鸣声那样的映射:

References(x => x.Country).Column("CountryId").NotFound().Ignore()

这里的问题是,如果我选择* Candidates,我会为每个选项获得额外的选择,这不是一件好事,所以我拉出NotFound()。Ignore()位,但现在以下代码因ObjectNotFoundException异常而失败:

if (entity.Country != null)
{
       bos.CountryName = entity.Country.Name;
}

当我比较郡时,有没有办法强制Hhibernate做选择!= null?

谢谢,

1 个答案:

答案 0 :(得分:5)

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

我的建议是捕获ObjectNotFoundException或修复数据,以免出现这些不一致。

以下是关于此的文章:http://opensource.atlassian.com/projects/hibernate/browse/HHH-2753