我正在映射旧数据库,以前用户在注册并稍后添加时不需要选择国家/地区。
因此,有些用户的CountryID为NULL。因此,当我的多对一映射(ByCode)尝试加载相应的国家/地区详细信息时,它找不到,因此用户的“country”对象为null。
当我尝试显示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);
});
我的国家地图很基本......
public CountryMap()
{
Id(p => p.ID, m => m.Generator(Generators.Identity));
Property(p => p.Code);
Property(p => p.Name);
}
答案 0 :(得分:0)
编码太晚了......大脑冻结......
如果国家/地区为NULL,我只是修改User POCO上的Country属性以返回一个新的Country()。
希望这有助于某人,但如果管理员删除了这个问题,我将不会被冒犯。 :) :) :))