我写了一个相当简单的代码(基于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 = "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);
}
}
}
答案 0 :(得分:2)
如果你需要更新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);
}
答案 1 :(得分:1)
我认为问题是你的日期时间类型。 sqlsever有多个日期时间。如果检查内部异常,您可能会看到您尝试放入表中的类型以及它实际需要的类型。转换无法自动完成,您应该在表中更改它或在代码中转换它。 它可以是datetime,datetime2(7)等。
答案 2 :(得分:1)
当用户忘记在特定表中添加Primery key
然后通过应用程序添加数据时,也会出现同样的错误。
答案 3 :(得分:0)
Lan说,
"错误消息详细说明了您需要知道的所有内容:
附加信息:支持“评估文化”的模型'自创建数据库以来,上下文已发生更改。考虑使用Code First Migrations更新数据库(http://go.microsoft.com/fwlink/?
这意味着您在AppraisalDBContext中使用的某个类已更改,但数据库尚未更新,因此现在已过时。您需要更新此使用Code First迁移。"
答案 4 :(得分:0)
add
时,具有相同主键的多个数据记录重叠,导致相同的错误
您应该查看主键设置
答案 5 :(得分:-1)
private void MainWindow_PreviewKeyDown(object sender, KeyEventArgs e)
{
bool isAlt = Keyboard.Modifiers == ModifierKeys.Alt;
bool isCtrl = Keyboard.Modifiers == ModifierKeys.Control;
string ctrlMod = string.Empty;
if (isAlt)
{
ctrlMod = "alt + " + e.SystemKey.ToString();
}
if (isCtrl)
{
ctrlMod = "ctrl + " + e.Key.ToString();
}
Debug.WriteLine("Key is " + ctrlMod);
}
答案 6 :(得分:-1)
就我而言,我在生成模型(.edmx 文件)和实体(.tt 文件)时出错。重新生成它解决问题
答案 7 :(得分:-3)
以下是解决System.Data.Entity.Infrastructure.DbUpdateException的过程。 请按照说明进行操作。
快乐编码!!!
https://msdn.microsoft.com/en-us/data/dn579398.aspx
最诚挚的问候, Thet Tin Oo