【发布时间】:2019-12-15 19:04:57
【问题描述】:
如果不编写整个 foreach 循环,有没有办法在 LINQ to Entities 中进行更新/设置? 使用 EF 6.x
简单的更新查询:
UPDATE stop_detail
SET cap_unique_id = b.Delivery_Location_Id
FROM order_detail b
WHERE Stop_Detail.CAP_Unique_Id IS NULL AND ((b.customer_id = 20 OR b.customer_id = 291) AND b.id = stop_detail.order_detail_id AND stop_type = 1)
所有上下文名称都相同。 我通常最终会编写大约 30 行 C# 代码来执行此操作,我知道必须有更好的方法!
【问题讨论】:
-
在 EntityFramework 中更新实体的默认方式是查询您的目标集,然后在 循环 中修改查询的实体,然后调用
SaveChanges。除非您使用第三方库,否则这是更新数据库的标准程序。它不应该是 30 行代码。理论上query.ToList()1 行。 foreach 2 行(或者您可以使用list.Foreach(t=> ...)用于 1 行),然后调用SaveChanges1 行 .. -
谢谢你……我就是这么干的……只是想知道是否有更好的方法。
-
我夸大了 30 行,但你知道我的意思...感谢 Eldar 的回复
标签: c# .net linq tsql entity-framework-6