나는 이런 식으로 뭔가 (ClearImportTable 및 InsertPage 저장 프로 시저를하는) 보이는 코드 조각이 :저장 프로 시저를 사용하는 LINQ의 트랜잭션을 SQL에 어떻게 적용합니까?
datacontext.ClearImportTable() //Essentially a DELETE FROM table
for (int i = 1; i < MAX_PAGES; ++i){
datacontext.InsertPage(i); //Inserts data into the table
}
이 내 코드의 다소 단순화 된 버전입니다,하지만 아이디어는 삽입하기 전에 테이블을 지 웁니다이다 기록. 유일한 문제는 ClearImportTable 다음에 오류가 발생하면 테이블의 모든 데이터가 지워집니다. 트랜잭션에이 오류를 감쌀 수있는 방법이 있습니까? 그렇다면 오류가있는 경우 모든 것이 다시 원래 상태로 돌아 가게됩니다. 예외가 발생하거나 사용하여 블록이 롤백됩니다 사용하여 블록 내에서 수행 transaction.Complete()를 모든 타격 방치하면
using (var transaction = new TransactionScope())
{
// do stuff here...
transaction.Complete();
}
:
MSDTC를 사용해야하므로 항상 좋은 생각은 아닙니다. –
MSDTC는 변환 내에서 둘 이상의 linq datacontext를 만들고 쿼리를 실행하는 경우에만 필요하다고 생각합니다. 트랜잭션 범위 내에서 하나의 datacontext 객체 만 만들면 필요하지 않습니다. –
MSDTC는 여러 리소스 관리자가 관련된 경우에만 필요합니다. 단일 DataContext 만 사용하고 단일 SQL Server 인스턴스에 연결하는 한 가벼운 트랜잭션을 사용해야합니다. – jrista