2010-08-05 5 views
1

나는 테이블에서 삭제할 행을 많이 가지고, 내가 이 텍스트와 함께하는 SqlCommand를 보낼 수 있습니다 ADO.NET을 사용하여 :Linq to SQL 청크 분할 삭제 또는 업데이트 작업?

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

내가 트랜잭션에 그 포장 또는 2 다음에서 삭제할 수 있습니다 것입니다 덩어리 때문에 DB가 공중에 올 수 있습니다.

C#에서 LINQ-to-SQL을 사용하여 동일한 작업을 수행하고 싶습니다. 가능합니까?

감사합니다.

답변

1

불행하게도 대량 업데이트 또는 질량이 Linq에 - 투 - SQL (와 L2S에 중단 developement에와, 그 어느 것이 확률이 낮다)

당신이 할 수있는 최선은

이다에서 작업을 삭제할가
db.myTable.DeleteOnSubmit(db.MyTable.Where(m=>m.myval ==123).Take(5000)); 

그러나 나는 확실히 5000 DELETE 문 다음에 SELECT를 생성 할 것이라고 확신합니다.

+0

그다지 좋지는 않지만 그것이 그것이 무엇인지 추측합니다. 그것은 총 행 수를 얻고 C# 루프에서 내 자신의 청킹을 수행하고 LinqtoSql에서 삭제를 수행해야 할 것처럼 냄새가납니다. 감사합니다. – Snowy