从一个 id 更新实体框架中的多行

Posted

技术标签:

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

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

SQL 中的示例:

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

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

【问题讨论】:

看看这个链接:***.com/questions/21592596/… 【参考方案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();

第二个是foreachcontains

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

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

【讨论】:

以上是关于从一个 id 更新实体框架中的多行的主要内容,如果未能解决你的问题,请参考以下文章

使用 System.Transaction 如何更新实体框架中的多行

实体框架更新多行

如何从实体框架 6 中的 Auditlog 实体获取 id

如何首先使用实体​​框架代码更新一行?

在实体框架中更新实体的最佳方法[重复]

在实体框架中批量插入后批量插入记录并获取它们的 ID