C# 实体框架4.0映射问题

C# 实体框架4.0映射问题,c#,entity-framework-4,edmx,C#,Entity Framework 4,Edmx,我在尝试使用Entity Framework 4.0运行解决方案时遇到以下错误,我想知道如何更改映射设置以更正它: 映射从第588行开始的片段时出现问题:必须为EntitySet UserDatas的所有键属性(UserDatas.Id)指定映射 为了提供一些背景信息,我最初创建了如下表,每个表中都有Modified/created Date/By和Id列,但后来决定将它们提取到抽象的UserData中,然后改用继承。自从我改变了这个,一切都完了 有没有人知道我哪里出了问题?我一直在使用下面的设

我在尝试使用Entity Framework 4.0运行解决方案时遇到以下错误,我想知道如何更改映射设置以更正它:

映射从第588行开始的片段时出现问题:必须为EntitySet UserDatas的所有键属性(UserDatas.Id)指定映射

为了提供一些背景信息,我最初创建了如下表,每个表中都有Modified/created Date/ById列,但后来决定将它们提取到抽象的UserData中,然后改用继承。自从我改变了这个,一切都完了

有没有人知道我哪里出了问题?我一直在使用下面的设计视图(GUI),感觉就像撞到了砖墙

我的db.edmx设计视图如下所示,单击该错误会将我带到如下所示的变量表,但对于继承该Id的所有其他表,该错误会重复出现(请忽略指向其他表的所有链接-我不想发布整个大db原理图):


非常感谢。

听起来您在这里误用了OO继承。对象共享具有相同属性名称的项并不意味着它们从基继承。例如,在你的模型中问问你自己标签是否是UserData?我想您可以更好地表述这一点,因为标记有一个指向包含而不是继承的UserData。我建议设置一个通用的IUserData接口,其中每个对象都明确地实现该接口。在这种情况下,映射会将UserData接口的属性移回基础类中(正如最初配置的那样)。虽然您可能能够使映射与继承模型一起工作,但从LINQ和TSQL的角度来看,您的查询将变得非常复杂。

感谢您的回答Jim-很好的建议。我决定放弃这个想法,寻找一个替代方案,在没有适当推理的情况下,不强制继承。再次感谢你,威尔