0

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

所以有些用户的 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);
}
4

1 回答 1

0

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

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

希望这对某人有所帮助,但如果管理员删除我不会被冒犯的问题。:) :) :)

于 2012-09-16T05:43:47.740 回答