私たちは、かなりラフなデータ モデルを持つレガシー コード ベースで作業しています。現在、次のようなオブジェクト マッピングがあります。
using FluentNHibernate.Mapping;
using Validation.Domain;
namespace Validation.DomainMaps
{
public sealed class BookMap : SubclassMap<Book>
{
public BookMap()
{
Map(x => x.Genre);
References(x => x.Shelf, "ShelfId")
.Nullable()
.Not.LazyLoad()
.NotFound.Ignore()
.Cascade.All()
.Fetch.Join();
}
}
}
アプリケーションでは、棚のない本は ShelfId が 0 になります。Shelf テーブルには Id が 0 の行はなく、nhibernate に依存して.NotFound.Ignore()
null を返します。これは後で確認して処理します。
これでここまでたどり着きましたが、Shelf テーブルにエントリがない 0 以外の ShelfId にアクセスしようとすると、例外をスローしようとしています。
理想的には、nhibernate は ID が 0 でないシェルフが見つからない場合にのみ例外をスローし、ID が 0 のシェルフを要求されたときに null を返します。
どんな助けでも例外的です!