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

我一直有以前的问题关于类inheritance和围绕此构造一个数据库,并使用entity framework没有成功。 所以我试图在Visual Studio中创build实体,并查看它自动创build的数据库表。

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

在这里输入图像描述

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

因为ConsoleTypeGame之间的关系并不知道它应该使用Console属性作为外键,所以你得到了开箱的列。 如果使用独立关联,则会发生这种情况 当您从实体devise器中的一个实体绘制其他实体时,将使用独立的关联。 您必须使用外键关联。

从这个设置开始(从ConsoleTypeGame绘制关系 – 你必须有一对多的关系):

在这里输入图像描述

在属性中selectConsoleTypeGame an之间的关系点击Referential Constraint

在这里输入图像描述

引用约束对话框中,只需设置关系:

在这里输入图像描述

保存你的模型并重新生成数据库。