【问题标题】:Why is my Linq query not updating the DB?为什么我的 Linq 查询没有更新数据库?
【发布时间】:2012-09-20 13:03:07
【问题描述】:

想知道是否有人可以看到为什么我收到错误“未找到或更改行”。当我执行这个 LINQ 查询时。

该行在那里并且数据正在被拾取,但是当涉及到更新时,我得到了上面提到的错误。

aboDataDataContext dc = new aboDataDataContext();

        var orders = dc.GetOrderToAcknowledges;

        //Get the TWE Order ID and Store in DB.
        foreach (var order in orders)
        {
            int orderId = dc.amzOrders.Single(o => o.amzOrderId == order.amzOrderId).id;
            DateTime now = DateTime.Now;

            GetTWEOrderID(orderId, now.ToString());

            amzOrder orderUpdate = dc.amzOrders.Single(o => o.id == orderId);
            orderUpdate.acknowledged = true;
            orderUpdate.lastUpdate = Convert.ToDateTime(now);

            dc.SubmitChanges();

        }

【问题讨论】:

  • Linq row not found or changed 的可能重复项
  • 你之前在 dc 的上下文中还做其他事情吗?
  • yes 会更新上面的代码...
  • 您是否尝试过移动 dc.SubmitChanges();在 foreach 循环之外?
  • 您能指定哪一行抛出异常吗?

标签: c# asp.net linq


【解决方案1】:

确保设计器为您的实体(如数据库架构)显示完全相同的字段

当数据库中发生实体中的更改未更新时,通常会发生此错误。

例如,可能会更改表列以允许 null 值,但实体未更新以识别更改。

【讨论】:

    【解决方案2】:

    解决了问题,查看了 DaveHogan 所说的内容,并稍微移动了一下,也更新了一些东西......

    var ou = dc.amzOrders.Single(o => o.amzOrderId == order.amzOrderId);
    int orderId = ou.id;
    DateTime now = DateTime.Now;
    
    ou.acknowledged = true;
    ou.lastUpdate = Convert.ToDateTime(now);
    
    dc.SubmitChanges();
    
    GetTWEOrderID(orderId, now.ToString());
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-13
      • 2017-11-13
      • 1970-01-01
      • 1970-01-01
      • 2015-01-03
      • 2016-08-06
      相关资源
      最近更新 更多