Nhibernate字节码映射——如何避免空的多对一对象映射?

Nhibernate字节码映射——如何避免空的多对一对象映射?,nhibernate,nhibernate-mapping,nullable,mapping-by-code,Nhibernate,Nhibernate Mapping,Nullable,Mapping By Code,我正在映射一个遗留数据库,以前用户在注册并随后添加国家时不需要选择国家 因此,有些用户的CountryID为空。因此,当我的多对一映射(ByCode)尝试加载相应的国家/地区详细信息时,它找不到任何国家/地区,因此用户的“国家/地区”对象为空 例如,当我尝试显示user.Country.Name时,我得到一个找不到的对象引用 我可以通过将一个id为-1的国家命名为Undiscovered,然后将所有空国家id更改为-1来破解这个问题,但我认为这是为了解决一个常见问题而作弊 所以我的问题是,我如何

我正在映射一个遗留数据库,以前用户在注册并随后添加国家时不需要选择国家

因此,有些用户的CountryID为空。因此,当我的多对一映射(ByCode)尝试加载相应的国家/地区详细信息时,它找不到任何国家/地区,因此用户的“国家/地区”对象为空

例如,当我尝试显示user.Country.Name时,我得到一个找不到的对象引用

我可以通过将一个id为-1的国家命名为Undiscovered,然后将所有空国家id更改为-1来破解这个问题,但我认为这是为了解决一个常见问题而作弊

所以我的问题是,我如何映射,以便在找不到CountryID的情况下,该用户获得一个新的Country对象

我在用户对象中的映射是:

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

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

我只是修改了用户POCO上的Country属性,如果Country为NULL,则返回一个新的Country()

希望这对某人有所帮助,但如果管理员删除了这个问题,我不会生气。:::)

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