2010-08-05 43 views
1

我有很多行的一個表中刪除,並使用ADO.NET我可能 發送一個SqlCommand有這樣的文字:Linq to SQL分塊刪除或更新操作?

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

我想包在一個交易或2,然後可以刪除大塊,所以數據庫可以提出空氣。

我想做同樣的事情,但在C#中使用LINQ到SQL,這是可能的嗎?

謝謝。

回答

1

不幸的是,沒有大規模更新或質量在LINQ到SQL(以及 研究與開發暫停L2S,它不可能有永遠不會是)

你能做的最好是

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

但我敢肯定,將生成一個SELECT後跟5000個DELETE語句。

+0

這不是很好,但我想這是它是什麼。它聞起來像我需要得到總行數,並在C#循環中做我自己的分塊,然後在LinqtoSql中執行刪除。 謝謝。 – Snowy 2010-08-06 19:13:06