2011-04-14 50 views
4

我有這樣的波紋管的候選對象的映射:NHibernate的延遲加載與Ignore.NotFound

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

這裏的問題是,如果我選擇*考生,我得到一個額外的選擇爲他們每個人,不是一件好事,所以我拉出NOTFOUND()忽略()位,但現在下面的代碼失敗ObjectNotFoundException異常:

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

有沒有辦法迫使Hhibernate做選擇的時候我比較縣! = null?

謝謝

回答

5

當您指定.NotFound()。忽略()這會強制即時加載的實體,不能與.LazyLoad被覆蓋()。 NHibernate這樣做是因爲它必須確保關係存在或不存在,因爲您不依賴數據庫來執行此操作。

我的建議是要麼捕獲ObjectNotFoundException或修復您的數據,使您沒有這些不一致。

這是關於此的文章:http://opensource.atlassian.com/projects/hibernate/browse/HHH-2753