【问题标题】:Update Multiple Rows in Entity Framework from one id从一个 id 更新实体框架中的多行
【发布时间】:2018-12-23 00:56:46
【问题描述】:

我正在尝试为实体框架创建一个查询,该查询将允许我获取一个 id 并更新与之关联的字段。

SQL 中的示例:

UPDATE Recibo
SET Estado = 3
WHERE IdApartado IN (7)

如何将以上内容转换为实体框架?

【问题讨论】:

标签: c# sql asp.net-mvc entity-framework-6


【解决方案1】:

有多种方法可以做到这一点,也许最简单的方法是读取记录,编辑并保存它们,如here 所述:

using (var dbContext = new DbContext())
{
    // read 
    var res = dbContext.Recibo.Where(r => r.IdApartado == 7).ToList();

    // update
    foreach (r in res)
    {
        r.Estado = 3;
    }

    // save
    dbContext.SaveChanges();
}

【讨论】:

    【解决方案2】:

    在 EF 中执行 in 子句的两种方法:

    第一个是 Contains:

    return dbContext.Query<R>.Where(r => subset.Contains(r.Id)).ToList();
    

    第二个是foreach 和contains:

     return dbContext.Query<R>.Where(r => subset.Contains(r.Id)).ToList().ForEach(a => a.id = "7");
    

    这是因为 EF 中 sql in 的最佳等效项是 Contains。

    【讨论】:

      猜你喜欢
      • 2014-03-02
      • 1970-01-01
      • 2014-03-31
      • 1970-01-01
      • 2013-06-24
      • 1970-01-01
      • 1970-01-01
      • 2017-02-01
      • 1970-01-01
      相关资源
      最近更新 更多