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でシェルフを見つけて、ヌルを返すことができなかった場合にのみ、例外をスローします例外的!

+0

を取る必要があり、私は全くあなたの質問を理解していない... – Phill

+0

@Phillは多分別の方法を言った:私はしたいです私が求めているIdに基づいてnhibernateが見つからない動作を制御する。私は、Id 0の行もId 12の行もないテーブルを持っているとしましょう。要求するId 0がnullを返しますが、Id 12が例外をスローするようにNotFoundの動作を制御したいとします。 デフォルトのNotFoundビヘイビア(例外をスローする)を残し、Idが0のダミー行を追加するのが簡単な解決策ですが、残念ながらId 0が要求されたときにnullを返すことに依存しています。 – Chris

答えて

0

これは完璧ではありませんが、この種のものを行うためにお探しの方は、ガンダーにhere

関連する問題