【发布时间】: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
我正在尝试为实体框架创建一个查询,该查询将允许我获取一个 id 并更新与之关联的字段。
SQL 中的示例:
UPDATE Recibo
SET Estado = 3
WHERE IdApartado IN (7)
如何将以上内容转换为实体框架?
【问题讨论】:
标签: c# sql asp.net-mvc entity-framework-6
有多种方法可以做到这一点,也许最简单的方法是读取记录,编辑并保存它们,如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();
}
【讨论】:
在 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。
【讨论】: