【发布时间】:2013-08-25 23:51:15
【问题描述】:
我有几个这样的类设置:
成员 (摘要)
- 属性1
- 属性 2(等)
组织成员:成员
- 属性3
- Property4(等)
PrivateMember:会员
- 物业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 确实不是很好。有什么建议吗?
【问题讨论】:
标签: c# entity-framework inheritance entity-framework-5 poco