Lazy loading for NHibernate with Ignore.NotFound

2019-04-08 08:55发布

I have a mapping like the bellow for a Candidate object:

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

the problem here is, if I select * Candidates I get a extra select for each of them, not a good thing, so I pull out the NotFound().Ignore() bit but now the following code fails with ObjectNotFoundException exception:

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

Is there a way to force Hhibernate do the select when I compare County != null ?

Thank you,

1条回答
叼着烟拽天下
2楼-- · 2019-04-08 09:42

When you specify the .NotFound().Ignore() this forces the entity to be eagerly loaded and cannot be overriden with the .LazyLoad(). NHibernate does this because it has to be sure that relationship exists or doesn't exist since you are not relying on the database to enforce this.

My suggestion would be to either catch the ObjectNotFoundException or to fix your data such that you don't have these inconsistencies.

Here's an article about this: http://opensource.atlassian.com/projects/hibernate/browse/HHH-2753

查看更多
登录 后发表回答