Entity framework 实体框架:每个类型的混合表和每个层次结构的混合表

Entity framework 实体框架:每个类型的混合表和每个层次结构的混合表,entity-framework,inheritance,Entity Framework,Inheritance,我的数据库中有两个表: 基本实体 基金 “基金”实体继承自带有“每种类型的表”的“BaseEtity” 在我的商业模式中,我有不同类型的“基金”: 总基金 直接投资基金 等等 我希望这些类型有不同的实体具有“每个层次结构的表”,这意味着我仍然只有一个带有类型鉴别器列的“基金”表 是否有一种方法可以在从具有“每类型表”的基类派生的实体上设置“每层次表”?这是不可能的,请参阅本文以获取参考: 是的,这是可能的-我已经在EF4中工作了一段时间了 Define EntityA and map t

我的数据库中有两个表:

  • 基本实体
  • 基金
“基金”实体继承自带有“每种类型的表”的“BaseEtity”

在我的商业模式中,我有不同类型的“基金”:

  • 总基金
  • 直接投资基金
  • 等等
我希望这些类型有不同的实体具有“每个层次结构的表”,这意味着我仍然只有一个带有类型鉴别器列的“基金”表


是否有一种方法可以在从具有“每类型表”的基类派生的实体上设置“每层次表”?

这是不可能的,请参阅本文以获取参考:


是的,这是可能的-我已经在EF4中工作了一段时间了

Define EntityA and map to TableA

Define EntityB: EntityA and map to TableB

Define EntityC: EntityA and map to TableC

Define EntityD: EntityC and map to TableC
    with condition on a column from table C

Define EntityE: EntityC and map to TableC
    with a different condition on a column from table C

我之前看到过这篇文章,但我想抱着希望再问一次:)也许有人想出了一个解决方案。这篇文章呈现了一个不同的、更复杂的场景。这是可能的。你是不是先用代码?我正在使用model first和EF designer。@SolarX,如果您真的是使用model first而不是database first,EF将创建SQL脚本,该脚本将根据每个类型的表映射约定创建表。我认为您实际上也在首先使用数据库(映射到现有表,而不是从edmx创建新表),然后将初始模型重塑为您希望的工作方式。您是从模型创建表,还是将模型映射到现有表,或者两者兼而有之?不管你用哪种方法,这种映射都是可能的。正如我说的,我首先使用模型。因此,我从模型中创建表(并且仅以这种方式)。问题并不是说您正在从实体中生成表(首先是纯模型)。选择的答案与您无关(也首先处理db),通常这种映射是可能的,无论您使用哪种方式,在model first中,您只需修改创建表的T4即可(您可以让它阅读设计器为实体提供的文档字段,以决定生成哪种类型的继承表。留下错误的可接受答案只会导致对EF的更多误解。