値オブジェクトとしてアドレスを含む個人エンティティがあります。
public Person()
{
WithTable("Person");
Id(x => x.Id);
Component<Address>(x => x.Address, a =>
{
a.Map(x => x.Address1);
a.Map(x => x.Address2);
a.Map(x => x.Address3);
a.Map(x => x.Town);
a.Map(x => x.Postcode);
});
}
NHibernateのドキュメントには、値オブジェクトのすべてのプロパティ(Address1、Address2など)がnullの場合、コンポーネント全体がnullとしてマップされる(つまり、Person.Addressがnullになる)と記載されています。これは、すべてのアドレスフィールドがnullの場合に問題を引き起こします。これは、私のページで(ASP MVCを実行している)次の理由で発生する可能性があるためです。
<%= Html.TextBoxFor((x => x.Address.Address1))%>
これはnull参照例外で壊れます。したがって、手動で行わずにデータベースからPersonをロードするときにすべてのフィールドが空の場合、Addressをnullではなく新しいAddress()オブジェクトとして設定するクリーンな方法を探しています。私は次のアイデアを割り引いた:
私の見解でヌルチェックを行う(yuk、恐ろしい)
データベースフィールドをnull許容不可にする(私はレガシーデータベースを扱っています)
誰かアイデアはありますか?