Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 实体框架5.0与继承_C#_Entity Framework_Inheritance_Entity Framework 5_Poco - Fatal编程技术网

C# 实体框架5.0与继承

C# 实体框架5.0与继承,c#,entity-framework,inheritance,entity-framework-5,poco,C#,Entity Framework,Inheritance,Entity Framework 5,Poco,我有几门课是这样设置的: 成员(摘要) 物业1 物业2(等) 组织成员:成员 财产3 财产4(等) 私人会员:会员 财产5 财产6(等) 然后,我有三个结构相同的数据库表——两种类型的成员实体的公共数据存储在成员表中,OrganizationMember特定的数据存储在相应的表中,PrivateMember特定的数据存储在相应的表中。成员表的Id与其他两个表的Id相同,因为它是1-1关系-只是一个分类,其中每个类型都有特定于它的内容。这在这里可能并不重要,但没有什么可以直接成为成员-

我有几门课是这样设置的:

成员(摘要)

  • 物业1
  • 物业2(等)
组织成员:成员

  • 财产3
  • 财产4(等)
私人会员:会员

  • 财产5
  • 财产6(等)
然后,我有三个结构相同的数据库表——两种类型的成员实体的公共数据存储在成员表中,OrganizationMember特定的数据存储在相应的表中,PrivateMember特定的数据存储在相应的表中。成员表的Id与其他两个表的Id相同,因为它是1-1关系-只是一个分类,其中每个类型都有特定于它的内容。这在这里可能并不重要,但没有什么可以直接成为成员-他们必须是两种类型中的一种

当我设置映射时(使用Fluid-所有带有EF的内容都是手工编码的,没有设计器,也没有EDMX文件),如果我告诉OrganizationMember忽略从成员继承的属性,我会得到“您不能对类型“[TypeName]”上的属性“[PropertyName]”使用ignore方法,因为该类型继承自类型“[BaseType]”'映射此属性的位置。若要从模型中排除此属性,请对基类型使用NotMappeAttribute或Ignore方法。'错误。但当我告诉它不要忽略从成员继承的属性时,它会抛出一个错误(“映射从[…][TypeName]开始的片段时出现问题,这些片段正在映射到表成员中的相同行。映射条件可用于区分这些类型映射到的行。”)。这里真正令人沮丧的是,出错的属性根本不应该映射到任何一个实体——它们是我总体框架设计的一部分,但根本没有数据库相关性,也不存在


我本以为这是一个相当标准的设置,但EF真的没有发挥好。有什么建议吗?

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


可以使用三种不同的方法首先在代码中表示继承层次结构:每个层次结构表、每个类型表和每个具体类表。

这看起来和我想要的一模一样。我会进一步检查,如果是这样,我会将其标记为已接受。谢谢你的快速回复!映射继承的类型有点棘手。。。所以,如果你想不出来,就发布一个映射代码的示例,也许我们可以提供帮助。这需要一些欺骗,但我成功了。成员类使用一个名为Address的密封类,其目标是在所有需要它的对象之间共享一个公共地址对象(而不是将所有特定于地址的属性添加到每个单独的类)。事实证明,EF不喜欢您这样做,即使您明确告诉它这些属性的去向。谢谢你给我指明了正确的方向!