从一个 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();
第二个是foreach
和contains
:
return dbContext.Query<R>.Where(r => subset.Contains(r.Id)).ToList().ForEach(a => a.id = "7");
这是因为 EF 中 sql in
的最佳等效项是 Contains
。
【讨论】:
以上是关于从一个 id 更新实体框架中的多行的主要内容,如果未能解决你的问题,请参考以下文章