当前位置: 首页 > 编程语言 > C#

如何避免System.Data.Entity.Infrastructure.DbUpdateException分享

时间:2023-04-10 15:07:04 C#

如何避免System.Data.Entity.Infrastructure.DbUpdateException我有这个DbContext对象包括--Employee-CompanyAddress(PK:AddressFirstLine,City)注意:一个员工可以有多个CompanyAddress记录,只有当某些地址在CompanyAddress表中不存在时,才会将其添加到CompanyAddress表中。如果我有两个来自数据库的DBContext对象,比如Snapshot1、Snapshot2。假设拍摄这两个快照时CompanyAddress表中没有任何记录。对Snapshot1进行更改并保存后-记录将写入CompanyAddress表。对Snapshot2进行更改并使用mydataContext.SaveChanges()进行保存时;发生异常:System.Data.Entity.Infrastructure.DbUpdateException:更新条目System.Data.SqlClient.SqlException时发生错误:违反PRIMARYKEY约束“PK_CompanyAddres”。无法在对象“dbo.CompanyAddress”中插入重复键似乎保存Snapshot1会使Snapshot2变脏,因为它们在保存回数据库时具有相同的CompanyAddress记录。我可以对dbContext对象进行哪些其他调用/设置来避免此错误?谢谢!您的错误与DbContext对象无关。您的问题是您正在尝试插入具有重复主键的记录。这就是您的异常消息所说的。查看CompanyAddress对象的创建方式以及保存它们时的键-这将为您提供线索。编辑:将主键作为自然键是一个坏主意,即您不应将城市和地址指定为主键。您应该使用Guid或Integer作为主键,而不是依赖于存储在数据库中的信息。为了强制唯一性,在保存到数据库之前,检查记录是否存在,并且可以根据唯一性约束将唯一性索引添加到数据库表中。以上就是C#学习教程:如何避免System.Data.Entity.Infrastructure.DbUpdateException分享的所有内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: