我写了一个相当简单的代码(基于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/

10-11 07:28