0

レガシー データベースをマッピングしていますが、以前はユーザーがサインアップして後で国を追加するときに国を選択する必要はありませんでした。

そのため、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);
}
4

1 に答える 1

0

コーディングが遅すぎる...脳の凍結...

国が NULL の場合に新しい Country() を返すように、User POCO の Country プロパティを変更しただけです。

これが誰かの役に立てば幸いですが、管理者が質問を削除しても気分を害することはありません。:) :) :)

于 2012-09-16T05:43:47.740 に答える