2013-02-15 103 views
0

我得到尝试使用实体框架4.0运行解决方案时,下面的错误,我想知道如何更改映射设置,以解决它:在映射片段实体框架4.0映射问题

问题开始在线路588:所述的EntitySet UserDatas

的必须为所有关键属性指定映射(UserDatas.Id)为了给出一些背景 - I最初创建/与修改/创建日期下面所示的表由Id列中的每一个,但随后决定将它们抽象为抽象UserData,然后使用继承。因为我改变了这一切,都已经去了锅!

有没有人有任何指向我要去哪里错了?我一直在使用下面的设计视图展示(GUI),感觉就像我碰到了一堵砖墙。

我的db.edmx设计视图看起来像这样,点击错误将我带到下面显示的Variables表中,但是对于继承此Id的所有其他表重复该错误(请忽略所有到其他的链接表 - 我没有要发布整个大分贝示意图):

enter image description here

非常感谢。

回答

1

听起来就像你在这里误用了OO继承。只是因为对象共享具有相同属性名称的项目并不意味着它们从基础继承。例如,问你自己在你的模块中,如果标签是用户数据?我怀疑你可以更好地描述这个标签HAS UserData指出遏制而不是继承。我建议设置一个通用的IUserData接口,其中每个对象都明确地实现接口。在这种情况下,您的映射会将UserData接口的属性移回到底层类中(因为它们最初是配置的)。尽管您可能能够使您的映射与继承模型一起工作,但从LINQ和TSQL的角度来看,您的查询将变得非常复杂。

+0

感谢您的回复吉姆 - 很好的建议。我决定放弃这个想法,并寻找一种替代方案,如果没有正确的推理就不会强迫继承。再次感谢,威尔 – WheretheresaWill 2013-02-18 09:31:20