C# 将SQL update语句转换为LINQ to实体
在不编写整个foreach循环的情况下,是否有办法在LINQ中对实体进行更新/设置? 使用ef6.x 简单更新查询:C# 将SQL update语句转换为LINQ to实体,c#,.net,linq,tsql,entity-framework-6,C#,.net,Linq,Tsql,Entity Framework 6,在不编写整个foreach循环的情况下,是否有办法在LINQ中对实体进行更新/设置? 使用ef6.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_
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行),然后调用SaveChanges
1行..谢谢..我就是这样做的…只是想知道是否有更好的方法。我夸大了30行,但是你知道我的意思…感谢EntityFramework中的响应EldarWell更新实体的默认方式是查询目标集,然后在循环中修改查询到的实体,然后调用SaveChanges
。除非使用第三方库,否则这是更新数据库的标准过程。它不应该是30行代码。理论上,query.ToList()1行。foreach 2行(或者您可以使用list.foreach(t=>…)
作为1行),然后调用SaveChanges
1行..谢谢..这就是我一直在做的…只是想知道是否有更好的方法。我夸大了30行,但你知道我的意思…感谢Eldar的回复
using (var context = new BloggingContext())
{
context.Database.ExecuteSqlCommand(
"UPDATE dbo.Blogs SET Name = 'Another Name' WHERE BlogId = 1");
}