在实体框架中映射继承的问题

时间:2013-12-17 15:01:18

标签: c# entity-framework

我正在尝试学习EF并遇到了一些问题。我有一个数据库,让我们简化一下,有4个表:

1) Items(NodeID, other fields), 
2) Nodes(NodeID, extra), 
3) Recipient(RecipientID, others) 
4) NodesRecipient(RecipientID, NodeID).

Item-Node是1-1关系,主键是NodeID 收件人具有主键RecipientID,NodesRecipient键是RecipientID和NodeID。 下面是图表 Node inherits from item 我使用VS 2012从上面的数据库创建了一个EF模型。创建模型后,我通过将其基数指定为Item并删除了它们之间的1-1关系,使得Node从派生中派生。我也把项目抽象化,因为我不想直接操纵该实体。

编译器抱怨:

  

错误1错误3024:从第266行开始映射片段时出现问题:必须指定EntitySet项的所有关键属性(Items.nodeID)的映射。

但是如果我没有使用继承,那么编译器就不会投诉,这很好。

No inheritance

我的问题是什么?如何解决这个问题?如果EF允许继承并且我认为它可以允许我指定基类,那将是很好的,但我认为在阅读Microsoft文档时可能会有一些我可能错过的链接。

1 个答案:

答案 0 :(得分:4)

您可能会错过子实体表的主键和基本实体表的主键中的外键。

添加FK后,从架构(从数据库)更新EDMX。