2011-01-24 18 views
1

私は最近Fluent NHibernate 1.1から1.0に移行しました。移行にはいくつかの大きな変更があります。例えば流行NHibernateの読み込み専用プロパティのマッピング

、任意の構成/規則を指定せずに正常に動作するために使用

public virtual string CustomerType 
    { 
     get { return /*computed value based on _Type which is a column in database */; } 

    } 

    public virtual string MemberType 
    { 
     get { return _Type; } 
     set { _Type = value; } 

    } 

のようなドメインモデル内のフィールド。今度は "setterを見つけることができませんでした"というエラーが表示されます。私はcustomerTypeや_customerTypeのようなメンバ変数を作成するか、保護されたセッタに入れるという点で解決策を見ています。

CustomerTypeは、データベースから取得した別の値に依存することに注意してください。

私はまたDefaultAutoMappingConfigurationのような

public override bool ShouldMap(Member member) 
    { 
     if (member.IsProperty && !member.CanWrite) 
     { 
      return false; 
     } 

     return base.ShouldMap(member); 
    } 

上書きされ http://support.fluentnhibernate.org/discussions/help/269-fluentnhibernate-11-automapper-doesnt-accept-read-only-properties-anymoreのような代替案を見てきました。しかし、これは完全にマッピングでスキップしているプラ​​イベートまたは保護されたセッターと他のフィールドを意味します。

私はFluent NHibernateが指定されていないときにセッターを探すのではなく、プライベート/プロテクトされたセッターをマッピングするソリューションを探しています。

これについてはどのように進むべきでしょうか?

答えて

1

これが唯一のマッピングである場合、またはブレークする少数のものの1つでは、手動で無視するか、セッターマッピングなしでマップします。それ以外の場合は、書き込み不可能なプロパティをリストに示したようにマッピングをオフにし、例外をマップします。あなた自身がコードをフォークして問題を解決するのに手間がかかり、他にも多くのことができるとは思いません。

UPDATE 私は保護され、民間のセッターのための真のテストとPropertyInfo.CanWriteリターンを走りました。だからあなたがすでに投稿したソリューションに本当に問題があるかどうかはわかりません。

1

派生値であるため、CustomerValueはデータベースから出力されますか?

仮想が削除されず、マッピングで除外されない場合。

+0

はい。これは、データベース内の列から派生した値です。私も同様に質問を更新しました。 – WorldIsRound

関連する問題