“System.Data.Entity.Infrastructure.DbUpdateException”发生在EntityFramework.dll [英] 'System.Data.Entity.Infrastructure.DbUpdateException' occurred in EntityFramework.dll

查看:2035
本文介绍了“System.Data.Entity.Infrastructure.DbUpdateException”发生在EntityFramework.dll的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我写了一个相当简单的代码(客户端服务器基于WCF和Windows形式)。
我试图更新数据库,这样我可以测试我的代码,我encounterd上述例外。
任何想法如何解决呢?



  //为了测试
公共无效updateTable()
{
使用(VAR DB =新overlayDBEntities())
{
变种overlaydb =新overlayData
{
DEVICEID =1111,
TimestampUTC =新日期时间(1990年,1,1,9,9,9),
OverlayData1 =Yoash而Maayan
};

db.overlayData.Add(overlaydb);


{
db.SaveChanges();
}
赶上(异常前)
{
Console.WriteLine(ex.Message);
}
变种overlaydb1 =新overlayData
{
DEVICEID =1111,
TimestampUTC =新日期时间(2000年,2,2,10,10,10) ,
OverlayData1 =seconed seconed seconed
};

db.overlayData.Add(overlaydb);


{
db.SaveChanges();
}
赶上(例外EC)
{
Console.WriteLine(ec.Message);
}
}
}


解决方案

如果您需要如果数据库中已存在,所以不要使用context.Add()来更新行;你可以使用如下:

  VAR overlaydb1 =新overlayData 
{
DEVICEID =1111,
TimestampUTC =新的日期时间(2000年,2,2,10,10,10),
OverlayData1 =seconed seconed seconed
};


{
db.overlayData.Attach(overlaydb1);
db.ObjectStateManager.ChangeObjectState(overlaydb1,EntityState.Modified);
db.SaveChanges();
}

赶上(例外EC)
{
Console.WriteLine(ec.Message);
}


I wrote a rather simple code (client server based on WCF and Windows form). i was trying to update the db so that i could test my code and i encounterd the above exception. Any ideas how to solve it?

      // 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);
            }
        }
    }

解决方案

If you need to update Row if already Exists in database so dont use context.Add();you can use as follows.

    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);
    }

这篇关于“System.Data.Entity.Infrastructure.DbUpdateException”发生在EntityFramework.dll的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆