我写了一个相当简单的代码(基于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,则不要使用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);
}
关于c# - EntityFramework.dll中发生了'System.Data.Entity.Infrastructure.DbUpdateException',我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19424058/