我在表中删除了很多行,并且可能使用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,这可能吗?
感谢。
答案 0 :(得分:1)
不幸的是,Linq-to-SQL中没有批量更新或批量删除操作(并且有 开发暂停在L2S上,不太可能会有)
你能做的最好的事情是
db.myTable.DeleteOnSubmit(db.MyTable.Where(m=>m.myval ==123).Take(5000));
但我很确定会产生一个SELECT后跟5000个DELETE语句。