レガシー データベースをマッピングしていますが、以前はユーザーがサインアップして後で国を追加するときに国を選択する必要はありませんでした。
そのため、NULL の CountryID を持つユーザーがいます。そのため、多対 1 マッピング (ByCode) が対応する国の詳細を読み込もうとすると、何も見つからないため、ユーザーの「国」オブジェクトは null になります。
たとえば、user.Country.Name を表示しようとすると、オブジェクト参照が見つかりません。
Undisclosed と呼ばれる ID が -1 の国を作成し、null の国 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);
}