1

我有几个这样的课程设置:

成员 (摘要)

  • 财产1
  • 财产2(等)

组织成员:成员

  • 财产3
  • 财产4(等)

私人会员:会员

  • 财产5
  • 财产6(等)

然后,我有三个以相同方式构造的数据库表 - 两种类型的成员实体共有的数据存储在 Member 表中,特定于 OrganizationMember 的数据存储在相应的表中,特定于 PrivateMember 的数据存储在相应的表中。Member 表的 Id 与其他两个表的 Id 相同,因为它是 1-1 关系 - 只是一种分类,其中每种类型都有特定的东西。在这里可能无关紧要,但没有什么可以直接成为会员 - 他们必须是两种类型之一。

当我设置我的映射时(使用 Fluid - 使用 EF 的所有内容都是手动编码的,没有设计师也没有 EDMX 文件),如果我告诉 OrganizationMember 忽略从 Member 继承的属性,我会得到“你不能在属性上使用 Ignore 方法'[PropertyName] '在类型 '[TypeName]' 上,因为此类型继承自映射此属性的类型 '[BaseType]'。要从模型中排除此属性,请在基本类型上使用 NotMappedAttribute 或 Ignore 方法。错误。但是,当我告诉它不要忽略从 Member 继承的那些属性时,它会引发错误(“从 [...] [TypeName] 开始的映射片段的问题正在映射到表 Member 中的相同行。映射条件可用于区分这些类型映射到的行。”)。

我会假设这是一个非常标准的设置,但 EF 真的不是很好。有什么建议么?

4

2 回答 2

2

本文介绍继承类型的映射。它列出了处理映射到继承的不同方法,具体取决于您想要实现的目标。

http://msdn.microsoft.com/en-us/data/jj591617.aspx#2.5

于 2013-08-23T03:25:29.103 回答
0

在 Code-First 中可以使用三种不同的方法来表示继承层次结构:Table Per Hierarchy、Table Per Type 和 Table Per Concrete 类。 这是详细信息。

于 2016-11-26T10:27:11.040 回答