EntityFramework.dll中发生’System.Data.Entity.Infrastructure.DbUpdateException’

我写了一个相当简单的代码(基于WCF和Windows窗体的客户端服务器)。 我试图更新数据库,以便我可以测试我的代码,我遇到了上述exception。 任何想法如何解决?

// For testing public void updateTable() { using (var db = new overlayDBEntities()) { var overlaydb = new overlayData { DeviceId = "1111", TimestampUTC = new DateTime(1990, 1, 1, 9, 9, 9), OverlayData1 = "Yoash And Maayan" }; db.overlayData.Add(overlaydb); try { db.SaveChanges(); } catch(Exception ex) { Console.WriteLine(ex.Message); } var overlaydb1 = new overlayData { DeviceId = "1111", TimestampUTC = new DateTime(2000, 2, 2, 10, 10, 10), OverlayData1 = "seconed seconed seconed " }; db.overlayData.Add(overlaydb); try { db.SaveChanges(); } catch (Exception ec) { Console.WriteLine(ec.Message); } } } 

如果你需要更新Row,如果已经存在于数据库中,那么不要使用context.Add();你可以使用如下。

  var overlaydb1 = new overlayData { DeviceId = "1111", TimestampUTC = new DateTime(2000, 2, 2, 10, 10, 10), OverlayData1 = "seconed seconed seconed " }; try { db.overlayData.Attach(overlaydb1); db.ObjectStateManager.ChangeObjectState(overlaydb1, EntityState.Modified); db.SaveChanges(); } catch (Exception ec) { Console.WriteLine(ec.Message); } 

我认为问题是你的日期时间的类型。 sqlsever有多个日期时间。 如果检查内部exception,您可能会看到您尝试放入表中的类型以及它实际需要的类型。 转换无法自动完成,您应该在表中更改它或在您的代码中转换它。 它可以是datetime,datetime2(7)等。

当用户忘记在特定表中添加Primery key时,也会出现相同的错误..然后通过应用程序添加数据。

根据兰,

“错误消息详细说明了您需要知道的所有内容:

附加信息:自创建数据库以来,支持’AppraisalDBContext’上下文的模型已更改。请使用Code First Migrations更新数据库( http://go.microsoft.com/fwlink/

这意味着您在AppraisalDBContext中使用的一个类已经更改,但数据库尚未更新,因此现在已过时。 您需要更新此使用Code First迁移。“

来自原帖

add ,具有相同主键的多个数据记录重叠,从而导致相同的错误

您应该检查主键设置

 using Code first approach . How to define primary key in Web API. Eg:- Model Class public class Categories { [Key] public int cateId { get; set; } public string cateName { get; set; } } Controller Class:- Categories Controller public bool AddCate(Categories preg) { db.Categories.Add(preg); db.SaveChanges(); return true; } Context Db Class public System.Data.Entity.DbSet Categories { get; set; } Error:-"System.Data.Entity.Infrastructure.DbUpdateException", 

下面是解决System.Data.Entity.Infrastructure.DbUpdateException的过程。 请按照说明操作。

快乐的编码!!!

https://msdn.microsoft.com/en-us/data/dn579398.aspx

最诚挚的问候,Thet Tin Oo