2012-03-28 3 views
0

慣例に基づいたマッピングでFluent NHを使用しています。私は以下を持っています:Fluentで同じタイプの2つのコンポーネントをマップする方法NHibernateのオートマップの規約

私は1つの名前フィールドを持つfooテーブルを作成する時点まで持っています。私は次のオーバーライドを試してみましたが、うまくいきません。

public class FooOverride : IAutoMappingOverride<Foo> 
    { 
     public void Override(AutoMapping<Foo> mapping) 
     { 
      mapping.Component(x => x.PrimaryBar).ColumnPrefix("primary"); 
      mapping.Component(x => x.SecondaryBar).ColumnPrefix("secondary"); 
     } 
    } 

完全にオーバーライドマッピングを実行する必要がありますか、ここで何らかの形で作業する必要がありますか?

答えて

0

私は仕事の質問に記載されている方法を得ることになった。 DefaultAutomappingConfigurationを継承したAutoMappingConfigurationで問題が判明しました。コンポーネントを適切に識別していませんでした。

+0

これは答えではありません。回答には詳細が含まれているはずです。 – dariol

0

私はFNHを使い始めて数年前にこれに遭遇しました。 FNH Automappingが「うまく動作しません」という私が見た数少ないシナリオの1つです。

私が成功裏に(コンポーネントではなくエンティティで)使い慣れたアプローチは、空の中間エンティティを作成し、それを子孫クラスで参照することです。

あなたの場合、BarComponent(たとえばPrimaryBarComponentとSecondaryBarComponent)を継承する2つの新しい空のクラスを作成できます。

次に、あなたのFooクラスで、として宣言:

public PrimaryBarComponent PrimaryBar { get; set; } 
public SecondaryBarComponent SecondaryBar { get; set; } 

これは私の意見では、クルーゲですが、それは、エンティティのエンティティとリストで正常に動作し、任意の上書きや規則を必要としません。

私はFNHでコンポーネントを使用したことがないので、同様のアプローチが有効かどうかはわかりませんが、調査する価値はあるかもしれません。

関連する問題