【问题标题】:ADO.Net EF - how to define foreign key relation in model first approach?ADO.Net EF - 如何在模型优先方法中定义外键关系?
【发布时间】:2011-07-23 14:25:03
【问题描述】:

我之前一直有关于类继承和围绕此构建数据库以及使用实体框架没有成功的问题。所以我尝试在 Visual Studio 中创建实体并查看它自动创建的数据库表。

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    选择ConsoleTypeGame 之间的关系并在属性中单击引用约束

    Referential Constraint对话框中设置关系:

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

    【讨论】:

    • 如果是“多对多”关系怎么办?因为它应该是根据我的理解。
    • @Guillaume:使用多对多关系时,您不能在 EF 中设置引用约束。
    猜你喜欢
    • 1970-01-01
    • 2018-05-31
    • 2016-06-11
    • 1970-01-01
    • 2011-08-13
    • 1970-01-01
    • 1970-01-01
    • 2011-05-15
    • 1970-01-01
    相关资源
    最近更新 更多