C# 将外键添加到数据库后出现错误112和错误113
这是我的表(整个过程的一部分,活动表仍然与其他表有其他关系): 在我的visual studio中添加外键并从数据库更新我的模型EDMX后,出现以下2个错误: 错误2错误112:从属角色中所有属性的类型 引用约束的类型必须与相应的 主体角色中的属性类型。财产类型 实体“istellarModel1.singalong”上的“ActivityID”与 中实体“istellarModel1.activity”的属性“ActivityID”的类型 参照约束 “FK_singalong_活动” 及 错误1错误113:中的角色“活动”中的多重性无效 关系“FK_singalong_活动”。因为所有的属性 从属角色可为空,且为主体角色的多重性 必须是“0..1” 我在singalong中检查了我的ActivityID,它的类型与activity表的activity ID相同,我不明白错误113的实际含义,我是数据库新手,起初我有许多表没有链接,所以我在一段时间后将它们链接起来,并在visual studio中更新了我的模型(EDMX)(使用实体框架),但它给了我错误 有什么指导吗C# 将外键添加到数据库后出现错误112和错误113,c#,asp.net,database,entity-framework,foreign-keys,C#,Asp.net,Database,Entity Framework,Foreign Keys,这是我的表(整个过程的一部分,活动表仍然与其他表有其他关系): 在我的visual studio中添加外键并从数据库更新我的模型EDMX后,出现以下2个错误: 错误2错误112:从属角色中所有属性的类型 引用约束的类型必须与相应的 主体角色中的属性类型。财产类型 实体“istellarModel1.singalong”上的“ActivityID”与 中实体“istellarModel1.activity”的属性“ActivityID”的类型 参照约束 “FK_singalong_活动” 及 错
这
113
错误听起来像是singalong
中的活动ID可以为空
如果依赖角色可为空,则多对一无效
这似乎也暗示了112
的原因-它很可能是在抱怨,因为它认为notnull
也是类型的一部分,所以这两列是不同的
快速修复方法可能是确保将singalong.ActivityID
标记为notnull
,但如果您希望singalong记录没有相应的活动,这将有问题
我知道应该如何修复它,至少在一开始是这样,但如果DBA知识更丰富,可能会不赞成这样做:我只需添加一个虚拟活动(例如,活动id=0),用于
singalong
表中通常为NULL的情况。我不是建议你这么做,但我想作为一个临时解决办法来研究这个可能性,因为我更像是一个实用主义者而不是教条主义者:-)我知道这是一个老问题,但遇到了同样的问题,这里是解决办法
如果打开.edmx文件(使用实体框架),您将看到不同的表。如果单击链接表的行:
它将显示属性。选择多重性并设置为0..1
您的外键需要设置为可空
singalong中的ActivityID已标记为非空,是否存在导致此问题的其他问题,错误113是关于主体角色和0..1关系。。让我更加困惑。@user2376998,不,不是没有看到更详细的实际表定义。但您可能想查看您的评论。“因为从属角色中的所有属性都可以为空”这句话似乎不同意。不是说你错了,只是看起来有点不协调。我已经更新了我的表格详细信息的屏幕截图,你还需要更多的详细信息吗?可能是EDMX的问题吗?@user2376998:还有更多的详细信息吗?不。看起来你确实是对的,这意味着这超出了我的专业范围,你必须等待其他人。我将把答案留在这里以供参考,但我会将其标记为CW,因为它不太可能是最终的答案。