0
私たちはかなり荒いデータモデルを持っているレガシーコードベースで作業しています。今、私たちはこのように見えるオブジェクトのマッピングがあります。アプリケーションでnullを返すタイミングと、IDに基づいて流暢なnHibernateを投げるタイミングを指定する
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();
}
}
}
を、棚のない本は0のShelfIdが0のIDと、と棚テーブルに行がありませんがあります私たちはnullを返すためにnhibernateの.NotFound.Ignore()
に依存しています。これについては、後で確認して処理します。
これまでのところ、Shelfテーブルにエントリを持たない0以外のShelfIdにアクセスしようとすると例外がスローされるようになってきました。
理想的には、NHibernateのは0
のIDで棚を求めたときにすべてのヘルプは次のようになり、それが非0 IDでシェルフを見つけて、ヌルを返すことができなかった場合にのみ、例外をスローします例外的!
を取る必要があり、私は全くあなたの質問を理解していない... – Phill
@Phillは多分別の方法を言った:私はしたいです私が求めているIdに基づいてnhibernateが見つからない動作を制御する。私は、Id 0の行もId 12の行もないテーブルを持っているとしましょう。要求するId 0がnullを返しますが、Id 12が例外をスローするようにNotFoundの動作を制御したいとします。 デフォルトのNotFoundビヘイビア(例外をスローする)を残し、Idが0のダミー行を追加するのが簡単な解決策ですが、残念ながらId 0が要求されたときにnullを返すことに依存しています。 – Chris