有没有办法对使用LINQ的集合进行批量更新?目前如果我有一个List<myObject>
并且我想更新column1以使列表中的每一行都等于TEST,那么我将设置一个foreach循环,然后为每个单独的对象设置值并保存它。这工作正常,但我只是想知道是否有一些LINQ方法在那里我可以做一些像myOject.BulkUpdate(columnName, value)
?批量更新LINQ to SQL
回答
听起来像你正在使用LINQ To SQL,你已经有了基础知识。
LINQ到SQL是关于将表抽象为类,并没有真正提供'银弹'或你想要的一行。
要做到这一点的唯一方法是实现您的单线程将使存储过程采取该列名称和新值,并自己实现该逻辑。
db.MassUpdateTableColumn("Customer", "Name", "TEST");
....
CREATE PROC MassUpdateTableColumn
@TableName varchar(100), @ColumnName varchar(100), @NewVal varchar(100)
AS
/*your dynamic SQL to update a table column with a new val. */
否则,它是为你描述:
List<Customer> myCusts = db.Customers.ToList();
foreach(Customer c in myCusts)
{
c.Name = "TEST";
}
db.SubmitChanges();
是的,我明白如何做到这一点。我的问题只是询问是否有更简化的LINQ函数。 – esastincy
LINQ到SQL(或EF为此事),是所有关于把对象到内存中,操纵它们,然后使用每行的单独数据库请求更新它们。
如果您不需要在客户端上提供整个对象,那么使用服务器端操作(存储过程,TSQL)而不是LINQ会更好。您可以使用LINQ提供程序针对数据库发出TSQL。例如,使用LINQ to SQL,你可以使用context.ExecuteCommand(“Update table set field = value where condition”),只需要注意SQL Injection。
这里的要求完全可以使用Linq表达式和Terry Aney在这个主题上的优秀库。
Batch Updates and Deletes with LINQ to SQL
在你给将如下的例子条款的更新:
using BTR.Core.Linq;
...
Context.myObjects.UpdateBatch
(
Context.myObjects.Where(x => x.columnName != value),
x => new myObject { columnName = value}
);
编辑(2017年1月20日):这是一文不值,这是现在可以NuGet包的形式@https://www.nuget.org/packages/LinqPost/。
Install-Package LinqPost
Upvoted避免RBAR,第一个答案是不正确的。 – Jasmine
- 1. LINQ to SQL更新
- 2. 加入和LINQ批量更新到SQL
- 3. 的LINQ to SQL - 更新
- 4. Linq to SQL - 未能更新
- 5. LINQ to SQL - 更新记录
- 6. Linq to SQL更新数据
- 7. Linq to SQL,更新多行
- 8. 更新记录Linq-to-SQL
- 9. LINQ to SQL更新问题
- 10. VB LINQ to SQL更新
- 11. asp.net 3.5 linq批量更新?
- 12. 批量Sql更新
- 13. Linq to SQL比Linq to Entities更快吗?
- 14. 更新Linq To Entities
- 15. 更新LINQ to SQL的操作
- 16. Linq To Sql ManyToMany更新现有记录
- 17. 用linq-to-sql更新记录列表
- 18. Linq to SQL:更新聚合根
- 19. Linq-To-Sql SubmitChanges不更新数据库
- 20. 的LINQ to SQL更新多张行
- 21. LINQ-to-Sql更新 - 性能问题
- 22. 使用LINQ to SQL更新表?
- 23. 插入在dymanic更新 - LINQ to SQL的
- 24. 的LINQ to SQL ::数据更新问题
- 25. 的LINQ to SQL更新对象
- 26. Linq-to-Sql选择视图,更新表
- 27. Linq-to-SQL不在WP7上更新
- 28. LINQ to SQL没有更新子元素
- 29. 更新SqlCE数据库Linq-to-Sql
- 30. linq-to-sql有条件地更新
你说的是LINQ-to-SQL吗? –
我总是回复到存储过程,使用XML作为批量数据进行批量更新,但想知道它在LINQ中是否可行。 –