Nhibernate ByCode Mapping - 如何避免多对一的对象映射?

时间:2012-09-16 05:04:11

标签: nhibernate nhibernate-mapping nullable mapping-by-code

我正在映射旧数据库,以前用户在注册并稍后添加时不需要选择国家/地区。

因此,有些用户的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);
}

1 个答案:

答案 0 :(得分:0)

编码太晚了......大脑冻结......

如果国家/地区为NULL,我只是修改User POCO上的Country属性以返回一个新的Country()。

希望这有助于某人,但如果管理员删除了这个问题,我将不会被冒犯。 :) :) :))