2012-09-16 186 views
0

我正在映射遺留數據庫,並且以前的用戶在註冊並且稍後添加它時並不需要選擇一個國家。Nhibernate ByCode映射 - 如何避免一個null多對一的對象映射?

所以有一些用戶的國家ID是NULL。因此,當我的多對一映射(ByCode)嘗試加載相應的國家/地區詳細信息時,它找不到任何內容,因此用戶的「國家/地區」對象爲空。

當我嘗試顯示user.Country.Name例如,我得到一個對象引用未找到。

我可以通過創建一個ID爲-1的國家稱爲未公開,然後將所有空國家id更改爲-1,但這是作弊以解決我認爲的一個常見問題。

所以我的問題是如何映射,如果沒有找到CountryID,該用戶將獲得一個新的Country對象。

我在用戶對象的映射是:

ManyToOne<Country>(x => x.Country, m => 
{ 
     m.Column("CountryID"); 
     m.Lazy(LazyRelation.NoLazy); 
     m.NotNullable(false); 
     m.Fetch(FetchKind.Join); 
}); 

我CountryMap是非常基本的...

public CountryMap() 
{ 
     Id(p => p.ID, m => m.Generator(Generators.Identity)); 
     Property(p => p.Code); 
     Property(p => p.Name); 
} 

回答

0

編碼太晚了......腦凍...

我只需修改用戶POCO上的Country屬性即可返回一個新的Country(),如果該國家爲NULL。

希望這可以幫助別人,但如果管理員刪除這個問題,我不會被冒犯。 :) :) :)