ADO.Net EF - 如何在模型第一种方法中定义外键关系?

时间:2011-03-26 18:46:08

标签: database visual-studio-2010 entity-framework ado.net entity-framework-4

我之前遇到过有关类继承和围绕此构建数据库的问题,并且使用实体框架没有成功。所以我试图在visual studio中创建实体,并查看它自动创建的数据库表。

我有一个Entity MediaItem,它是Abstract和Game Inherits from this。游戏有一个控制台(Int),对应于ConsoleID。但是,当我生成数据库时,我在MediaItems_Game表中获得了一个额外的不需要的列(ConsoleTypes_ConsoleID)。为什么这样,我怎么能防止这种情况发生?感谢。

enter image description here

1 个答案:

答案 0 :(得分:26)

首先你的模型可能是错的。 ConsoleTypeGame不是一对一的关系(除非您为每种控制台类型都有单一游戏)。我希望1个控制台可以有多个游戏。所以它应该是一对多的。实际上,游戏可以在多个平台上发布,因此它应该是多对多的。

由于ConsoleTypeGame之间的关系不知道它应该使用Console属性作为外键,因此您获得了未列出的列。如果使用独立关联,则会发生这种情当您从实体设计器中的一个实体绘制到其他实体时,默认使用独立关联。您必须使用外键关联。

从此设置开始(从ConsoleTypeGame绘制关联 - 您必须具有一对多关系):

enter image description here

选择ConsoleTypeGame之间的关系,在属性中点击参照约束

enter image description here

Referential Constraint 对话框中设置关系:

enter image description here

保存模型并再次生成数据库。