0

最も単純化されたバージョンでは、ここに私の問題があります ここに画像の説明を入力

public class D{
 public List<A> ListofA {get;set;}
}

public interface A{
}

public class B implements A{
}

public class C implements A{
}

class B表 Bにマップ表 C
class Cにマップ

A は単なるインターフェイスであり、どのテーブルにもマップされません。

many-to-manyD -> A 間のポリモーフィック ( ) 関連付けを定義するにはどうすればよいですか?

で使用NHibernateしていFluentMappingます。

4

1 に答える 1

0

私は自分の質問に答えようとしています。しかし、私はこの問題に対するより良い/より合理的な解決策を見つけたいと思います。

これが私の解決策です:

再設計Class D

私は次のように再設計class Dします

      public class D {
              public List<MagicObj> ListofA {get;set;}
      }

       //New Entity added which was not there in the question before.
       public class MagicObj{
              public A   ActualEntity{get;set;}
       }

残りのエンティティに変更はありません。

         public interface A{

         }

         public class B implements A{

         }

         public class C implements A{

         }

この設計変更により、マップできるようになります

流暢なマッピング

上記の再設計されたクラス構造の場合

D->MagicObj as HasMany(x=>x.ListofA)
MagicObj->A as ReferenceAny(x=>x.ActualEntity)
                    .EntityIdentifierColumn("EntityType")
                    .EntityIdentifierColumn("EntityId");

Class Dの間に新しい関係を追加することを選択したと思いますがClass A、Fluentで直接マップする方法を見つけることができませんでした。

于 2011-10-26T18:27:22.543 に答える