database - ADO.Net EF - 如何在模型优先方法中定义外键关系?

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

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

我有一个实体 MediaItem,它是抽象的,游戏继承自它。游戏有一个 Console (Int) 对应于 ConsoleID。但是,当我生成数据库时,我在 MediaItems_Game 表中得到了一个额外的不需要的列 (ConsoleTypes_ConsoleID)。为什么会这样,我怎样才能防止这种情况发生?谢谢。

enter image description here

最佳答案

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

你得到了不需要的列,因为你在 ConsoleTypeGame 之间的关系不知道它应该使用 Console 属性作为外键。如果您使用独立关联,就会发生这种情况。当您在实体设计器中将它们从一个实体绘制到另一个实体时,默认情况下使用独立关联。您必须使用外键关联。

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

enter image description here

选择 ConsoleTypeGame 之间的关系,然后在属性中单击 Referential Constraint:

enter image description here

Referential Constraint 对话框中刚刚设置关系:

enter image description here

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

关于database - ADO.Net EF - 如何在模型优先方法中定义外键关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5444450/

相关文章:

sql - (未成功)测试Oracle SQL中索引的效果

database - 在数据库中存储有序列表(Gap 方法)

sql - 为 sybase IQ 插入忽略替代项

entity-framework - HasKey Throwing InvalidOperationException-这是Entity Framework Code First中的错误吗?

mysql - SQL 计算行中等于特定值的列

c# - Visual Studio SOAP 服务引用客户端 : see XML message

c# - 从类库中使用 Web 服务

c++ - 结构数组的初始化列表的行为

c# - 我可以避免 Entity Framework 使用 SQL_VARIANT 来查询吗?

entity-framework - EF6 alpha 异步等待实体存储过程/函数导入?