Linq to sql 使用LINQ到SQL的批量更新
有没有办法使用LINQ对集合进行批量更新?当前,如果我有一个Linq to sql 使用LINQ到SQL的批量更新,linq-to-sql,Linq To Sql,有没有办法使用LINQ对集合进行批量更新?当前,如果我有一个列表,并且我想更新column1以对列表中的每一行进行相等测试,我会设置一个foreach循环,然后对每个单独的对象设置值,然后保存它。这很好,但我只是想知道是否有一些LINQ方法,我可以在那里执行类似于myObject.BulkUpdate(columnName,value)?的操作,听起来像是在使用LINQtoSQL,而且您已经准备好了基础知识 LINQtoSQL是关于将表抽象为类的,并没有真正提供您想要的“银弹”或一行代码 要做到
列表
,并且我想更新column1以对列表中的每一行进行相等测试,我会设置一个foreach循环,然后对每个单独的对象设置值,然后保存它。这很好,但我只是想知道是否有一些LINQ方法,我可以在那里执行类似于myObject.BulkUpdate(columnName,value)
?的操作,听起来像是在使用LINQtoSQL,而且您已经准备好了基础知识
LINQtoSQL是关于将表抽象为类的,并没有真正提供您想要的“银弹”或一行代码
要做到这一点,唯一的方法是实现一行程序,即创建一个存储过程来获取该列名和新值,然后自己实现该逻辑
db.MassUpdateTableColumn("Customer", "Name", "TEST");
....
否则,正如您所描述的:
List<Customer> myCusts = db.Customers.ToList();
foreach(Customer c in myCusts)
{
c.Name = "TEST";
}
db.SubmitChanges();
List myCusts=db.Customers.ToList();
foreach(myCusts中的客户c)
{
c、 Name=“测试”;
}
db.SubmitChanges();
LINQ to SQL(或EF)就是将对象放入内存,对它们进行操作,然后对每一行使用单独的数据库请求更新它们
在不需要在客户机上水合整个对象的情况下,最好使用服务器端操作(存储过程、TSQL)而不是LINQ。您可以使用LINQ提供程序对数据库发出TSQL。例如,使用LINQ to SQL,您可以使用context.ExecuteCommand(“更新表集字段=条件所在的值”),只需注意。使用LINQ表达式和Terry Aney关于此主题的优秀库,您在这里的需求是完全可能的 您给出的示例的更新如下:
using BTR.Core.Linq;
...
Context.myObjects.UpdateBatch
(
Context.myObjects.Where(x => x.columnName != value),
x => new myObject { columnName = value}
);
编辑(2017-01-20):它毫无价值,现在以NuGet软件包的形式提供
你说的是LINQ到SQL吗?我总是使用存储过程来使用XML作为批量数据进行批量更新,但我想知道在LINQ中是否可行。是的,我知道如何做到这一点。我的问题只是问是否有更精简的LINQ函数。对于避免RBAR,第一个答案并不正确。
using BTR.Core.Linq;
...
Context.myObjects.UpdateBatch
(
Context.myObjects.Where(x => x.columnName != value),
x => new myObject { columnName = value}
);
Install-Package LinqPost