我之前遇到过有关类继承和围绕此构建数据库的问题,并且使用实体框架没有成功。所以我试图在visual studio中创建实体,并查看它自动创建的数据库表。
我有一个Entity MediaItem,它是Abstract和Game Inherits from this。游戏有一个控制台(Int),对应于ConsoleID。但是,当我生成数据库时,我在MediaItems_Game表中获得了一个额外的不需要的列(ConsoleTypes_ConsoleID)。为什么这样,我怎么能防止这种情况发生?感谢。
答案 0 :(得分:26)
首先你的模型可能是错的。 ConsoleType
和Game
不是一对一的关系(除非您为每种控制台类型都有单一游戏)。我希望1个控制台可以有多个游戏。所以它应该是一对多的。实际上,游戏可以在多个平台上发布,因此它应该是多对多的。
由于ConsoleType
和Game
之间的关系不知道它应该使用Console
属性作为外键,因此您获得了未列出的列。如果使用独立关联,则会发生这种情当您从实体设计器中的一个实体绘制到其他实体时,默认使用独立关联。您必须使用外键关联。
从此设置开始(从ConsoleType
到Game
绘制关联 - 您必须具有一对多关系):
选择ConsoleType
和Game
之间的关系,在属性中点击参照约束:
在 Referential Constraint 对话框中设置关系:
保存模型并再次生成数据库。