Lazy loading for NHibernate with Ignore.NotFound

蹲街弑〆低调 提交于 2020-01-22 19:54:39

问题


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:


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



来源:https://stackoverflow.com/questions/5663548/lazy-loading-for-nhibernate-with-ignore-notfound

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!