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);
}