我以前遇到过有关类继承和围绕此构建数据库以及使用 Entity Framework 的问题,但没有成功。所以我尝试在 visual studio 中创建实体并查看它自动创建的数据库表。
我有一个实体 MediaItem,它是抽象的,游戏继承自它。游戏有一个 Console (Int) 对应于 ConsoleID。但是,当我生成数据库时,我在 MediaItems_Game 表中得到了一个额外的不需要的列 (ConsoleTypes_ConsoleID)。为什么会这样,我怎样才能防止这种情况发生?谢谢。
最佳答案
首先你的模型可能是错误的。 ConsoleType
和 Game
不是一对一的关系(除非每种控制台类型都有一个游戏)。我希望 1 个控制台可以有多个游戏。所以应该是一对多的。实际上游戏可以在多个平台上发布,所以它应该是多对多的。
你得到了不需要的列,因为你在 ConsoleType
和 Game
之间的关系不知道它应该使用 Console
属性作为外键。如果您使用独立关联,就会发生这种情况。当您在实体设计器中将它们从一个实体绘制到另一个实体时,默认情况下使用独立关联。您必须使用外键关联。
从这个设置开始(绘制从 ConsoleType
到 Game
的关联 - 您必须具有一对多关系):
选择 ConsoleType
和 Game
之间的关系,然后在属性中单击 Referential Constraint:
在 Referential Constraint 对话框中刚刚设置关系:
保存模型并再次生成数据库。
关于database - ADO.Net EF - 如何在模型优先方法中定义外键关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5444450/