“System.Data.Entity.Infrastructure.DbUpdateException”发生在Enti
本文关键字:Enti DbUpdateException System Data Entity Infrastructure | 更新日期: 2023-09-27 18:35:49
我写了一个相当简单的代码(基于WCF和Windows表单的客户端服务器)。我正在尝试更新数据库,以便我可以测试我的代码,但我遇到了上述异常。有什么想法如何解决吗?
// 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 = "Random Text"
};
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 (如果数据库中已存在),请不要使用上下文。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);
}
当用户忘记在特定表中添加Primery key
然后通过应用程序添加数据时,也会出现同样的错误。
我认为问题在于您的日期时间的类型。 sqlsever 有多个日期时间。 如果检查内部异常,您可能会看到尝试放入表中的类型以及它实际需要的类型。 转换无法自动完成,您应该在表中更改它或在代码中转换它。它可以是日期时间、日期时间2 (7) 等。
根据兰的说法,
"错误消息详细说明了您需要了解的所有信息:
附加信息:自创建数据库以来,支持"AppraisalDBContext"上下文的模型已更改。请考虑使用代码优先迁移来更新数据库 (http://go.microsoft.com/fwlink/?
这意味着您在 AppraisalDBContext 中使用的一个类已更改,但数据库尚未更新,因此现已过期。您需要更新此使用代码优先迁移。
来自原始帖子
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<TestingWebApi.Models.Categories> 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