Linq to SQL Chunked删除或更新操作?

时间:2010-08-05 14:15:50

标签: sql linq transactions

我在表中删除了很多行,并且可能使用ADO.NET 使用以下文本发送SqlCommand:

 WHILE(1=1)  
BEGIN  
DELETE TOP(5000) FROM myTable WHERE myval=123  
 IF @@ROWCOUNT < 5000 BREAK  
END  

我会将它包装在一个事务或2中,然后可以在块中删除,这样DB就可以出来了。

我想做同样的事情但是在C#中使用LINQ-to-SQL,这可能吗?

感谢。

1 个答案:

答案 0 :(得分:1)

不幸的是,Linq-to-SQL中没有批量更新或批量删除操作(并且有 开发暂停在L2S上,不太可能会有)

你能做的最好的事情是

db.myTable.DeleteOnSubmit(db.MyTable.Where(m=>m.myval ==123).Take(5000));

但我很确定会产生一个SELECT后跟5000个DELETE语句。