我正在映射一个遗留数据库,以前用户在注册并稍后添加它时不需要选择一个国家。
所以有些用户的 CountryID 为 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);
}