繁体   English   中英

C#,SQL Server:INSERT语句与FOREIGN KEY约束冲突

[英]C#, SQL Server: The INSERT statement conflicted with the FOREIGN KEY constraint

我正在使用C#,实体框架和SQL Server编码数据库访问方法。

更新数据库后,我开始收到奇怪的“ INSERT语句与FOREIGN KEY约束冲突 ”错误消息。 在Visual Studio中执行单元测试时,我注意到只有一个数据库表A的错误。

我的单元测试的场景如下:

  1. 数据库表A与其他表具有多个多对一关系
  2. 数据库表A具有FK ,它指向其他表的PK
  3. 所有数据行均已正确插入并提交到其他表( PK 指南是唯一的)
  4. 使用C#进行调试时,已为C#上下文正确设置了所有数据库表A FKGuid值。TableA.Add(item)语句
  5. 使用SQL Server Profiler进行调试时,为该语句中的每个FK创建的SQL INSERT语句具有正确的Guid值。

结果, INSERT语句给出FOREIGN KEY约束错误消息。 插入 每个FK时 INSERT都会失败,并且只有在我从表A中删除所有FK之后, INSERT才会成功。

因此,我认为我的SQL Server或表A可能有问题。

这是表A的一些统计数据

  1. 它有大约80列
  2. 每行大约10 kB大
  3. 执行INSERT时表为空

我很高兴收到有关此项目进展的任何提示!

谢谢你的帮助。 我想我找到了解决问题的办法。

我正在使用DeZing for Databases工具进行数据库设计以及创建数据库创建脚本。

我已经从表A到另一个表绘制了一个关系。 该关系具有如下连接的两个键

表A <--------------------------------> CustomerAddress

PK引导

FK CustomerAddressGuid <-------> PK Guid

FK CustomerGuid <------------------> FK CustomerGuid

现在订购了DeZing for Databases工具

FK CustomerGuid <------------------> FK CustomerGuid (首先是FK关系)和

FK CustomerAddressGuid <-------> PK Guid (下一个PK关系)

因此,即使值正确,INSERT也失败,因为FK-FK关系早于PK-FK。

不幸的是,DeZing工具无法自动解决此情况,并且在该工具中不容易看到关系顺序。

解决方案是在工具中重新排列链接属性的顺序( 首先是PK属性 ),然后重新创建数据库创建脚本。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM