在Hibernate / NHibernate中为类继承映射多对多关系

时间:2011-10-26 16:39:58

标签: hibernate nhibernate fluent-nhibernate fluent-nhibernate-mapping

在最简化的版本中,这是我的问题 enter image description here

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
class C映射到表C

A只是一个界面,不会映射到任何表格。

如何定义D - &gt;之间的多态(many-to-many)关联。 A

我将NHibernateFluentMapping一起使用。

1 个答案:

答案 0 :(得分: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{

         }

此设计更改应该允许我映射

Fluent Mapping

用于上述重新设计的类结构

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

猜猜我选择使用在Class DClass A之间添加新关系 我无法找到直接在Fluent中映射它的方法。