【问题标题】:Error 112 and Error 113 after adding foreign keys to database将外键添加到数据库后出现错误 112 和错误 113
【发布时间】:2013-08-29 03:40:57
【问题描述】:

这是我的表(整个东西的一部分,活动表与其他表还有其他关系):

在我的 Visual Studio 中添加外键并从数据库中更新我的模型 EDMX 后,出现了这 2 个错误:

错误 2 错误 112:Dependent Role 中所有属性的类型 引用约束的值必须与对应的相同 主要角色中的属性类型。财产类型 实体“istellarModel1.singalong”上的“ActivityID”与 实体“istellarModel1.activity”上的属性“ActivityID”类型 参照约束 'FK_singalong_activity'。

错误 1 ​​错误 113:多重性在角色“活动”中无效 关系'FK_singalong_activity'。因为所有的属性在 依赖角色可以为空,主体角色的多重性 必须是“0..1”。

我在单曲中检查了我的 ActivityID 与活动表的 Activity ID 具有相同的类型,但我不明白错误 113 的实际含义,我是数据库新手,起初我有很多表没有链接所以我一段时间后将它们链接起来并在视觉工作室(使用实体框架)中更新我的模型(EDMX),它给了我错误。

请问有这方面的指导吗?

【问题讨论】:

    标签: c# asp.net database entity-framework foreign-keys


    【解决方案1】:

    113 错误听起来像您在singalong 中的活动 ID 可以为空。

    如果从属角色可以为空,则说明多对一无效。

    这似乎也暗示了 112 的原因 - 它很可能是在抱怨,因为它也将 NOT NULL 视为类型的一部分,因此两列是不同的。

    一个快速的解决方法可能是确保singalong.ActivityID 被标记为NOT NULL,但如果您想要在没有相应活动的情况下单曲记录,这将是有问题的。

    我知道我会如何解决它,至少在最初是这样,但是对于知识渊博的 DBA 来说可能会皱眉头:我只需添加一个虚拟活动(例如,活动 id = 0)以用于那些你singalong 表中通常会有 NULL。我不是建议您这样做,但有可能将其视为一种临时解决方案,它更像是一个实用主义者而不是教条主义者 :-)

    【讨论】:

    • singalong 中的 ActivityID 已经标记为 NOT NULL ,是否还有其他问题导致此问题? , 错误 113 谈论 Principal 角色和 0..1 关系.. 让我更加困惑。
    • @user2376998,不,不是没有更详细地查看实际的表定义。但你可能想检查你的评论。 “因为从属角色中的所有属性都可以为空”这句话似乎不同意。不是说你错了,只是看起来有点不协调。
    • 我已更新为包含我的表格详细信息的屏幕截图,您还需要更多详细信息吗?
    • 会不会是EDMX的问题?
    • @user2376998:还有更多细节吗?不。看起来您确实是正确的,这意味着这超出了我的专业领域,您将不得不等待其他人。我将在此处留下答案以供参考,但我会将其标记为 CW,因为它不太可能是最终答案。
    【解决方案2】:

    我知道这是一个老问题,但遇到了同样的问题,这里是修复。

    如果您打开 .edmx 文件(使用实体框架),您将看到不同的表格。如果您单击链接表格的行:

    它将显示属性。选择多重性并设置为 0..1 您的外键需要设置为可为空。

    【讨论】:

      猜你喜欢
      • 2017-09-08
      • 1970-01-01
      • 1970-01-01
      • 2019-03-06
      • 2012-06-02
      • 2020-12-21
      • 2014-10-22
      • 2013-11-16
      • 2014-10-10
      相关资源
      最近更新 更多