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

发布于 2024-12-12 05:06:52 字数 523 浏览 0 评论 0原文

在最简化的版本中,这是我的问题 在此处输入图像描述

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

public interface A{
}

public class B implements A{
}

public class C implements A{
}

B 类 映射到表 B
class C 映射到Table C

A 只是一个接口,没有映射到任何表。

如何定义D -> 之间的多态(多对多)关联A

我正在使用 NHibernateFluentMapping

In the most simplified version , here is my problem
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 maps to Table B
class C maps to Table C

A is just an interface and is not mapped to any table.

How do I define the polymorphic (many-to-many) association between D -> A

I am using NHibernate with FluentMapping.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

送舟行 2024-12-19 05:06:52

我试图回答我自己的问题。
但是我想找到这个问题的更好/更合理解决方案。

这是我的解决方案:

重新设计D类

我重新设计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 中映射它的方法。

I am attemped to answer my own question.
However I would like to find out BETTER/ MORE RATIONAL solution to this problem.

Here is my solution:

Redesign Class D

I redesign class D as

      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;}
       }

NO changes in the remaining entities.

         public interface A{

         }

         public class B implements A{

         }

         public class C implements A{

         }

This design change should allow me to map

Fluent Mapping

for the above redesigned class structure

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

Guess I choose to use add a new relation between Class D and Class A is that
I was not able to find a way to map it directly in Fluent.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文