2010-03-31 4 views
6

SQL/ADO로 작업하면서 .net 프레임 워크에 논리적으로 포함시켜야한다고 생각하는 부분이 있습니다. 그런 것이 있는지 설명하고 싶습니다..net, 트랜잭션 객체를 가져 옵니까?

본질적으로 트랜잭션 관리자 인 객체가 있으며, 트랜잭션에있는 각 작업 항목에 대해 롤백 조치를 전달해야 할 필요가 있다고 상상할 수있는 명령 (작업 항목)을 전달합니다.

  1. 이 폴더
  2. 에서 파일을 생성 폴더
  3. 만들기 편집 등록 키와 같은 다른 기타 작업을 수행 : 예

    를 들어

    나는 다음과 같은 작업을 수행하고 싶었 말할 수 있습니다 , 또는 당신이 생각할 수있는 행동을 롤백 할 수 있습니다.

현재 현재 장애가 발생하면 롤백 전략을 수동으로 구현해야합니다. 따라서 이러한 작업 항목을 oob .net 기능을 사용하여 트랜잭션으로 관리하는 방법이 있습니까?

내 고려 사항은 항목을 자동으로 롤백하도록 요청할 것이지만 작업 항목 당 롤백하는 동안 일어나는 일을 수동으로 제어 할 수있는 능력이 있으면 실용적으로 보입니다.

또 다른 것은 Microsoft가 LINQ를 사용하여 수행 한 작업이 SQL 테이블뿐만 아니라 모든 종류의 쿼리에 대해 SQL과 같은 쿼리를 효과적으로 처리 할 수 ​​있다는 것입니다. LINQ를 사용하는 트랜잭션 모델이 있습니까?

감사합니다. 이와 같은 정보가 있으면 알려주세요.

답변

0

일반적으로 이러한 의미에서의 트랜잭션은 파일 시스템 작업이 아니라 DB IO를 의미합니다. ADO.Net 2.0에서는 아래와 같은 코드를 작성합니다.

다른 트랜잭션 유형의 경우 MS DTC (Distributed Transaction Coordinator)를 살펴 보시기 바랍니다. 이렇게하면 트랜잭션이 서로 다른 시스템으로 분산 될 수 있으며 롤백 할 사용자 정의 작업을 참여시킬 수 있다고 생각됩니다.

이 정보가 도움이되기를 바랍니다.

using (SqlConnection connection = 
      new SqlConnection(connectionString)) 
{ 
    SqlCommand command = connection.CreateCommand(); 
    SqlTransaction transaction = null; 

    try 
    { 
     // BeginTransaction() Requires Open Connection 
     connection.Open(); 

     transaction = connection.BeginTransaction(); 

     // Assign Transaction to Command 
     command.Transaction = transaction; 

     // Execute 1st Command 
     command.CommandText = "Insert ..."; 
     command.ExecuteNonQuery(); 

     // Execute 2nd Command 
     command.CommandText = "Update..."; 
     command.ExecuteNonQuery(); 

     transaction.Commit(); 
    } 
    catch 
    { 
     transaction.Rollback(); 
     throw; 
    } 
    finally 
    { 
     connection.Close(); 
    } 
} 
5

당신은 트랜잭션을 시작 TransactionScope 클래스를 사용할 수 있지만 그 트랜잭션 내에서 취할 조치는 "거래 인식"하고 트랜잭션이 롤백되는 경우 보상하는 방법을 알아야합니다.

Brent VanderMeide는 dnrTV에서 TransactionScope에 대해 알고있는 클래스를 작성하는 방법에 대한 2 부작 시리즈를했습니다. 여기에 part 1이고 여기에 part 2입니다.

+0

이것은 매우 유망 해 보입니다. 데이터베이스에만 국한된 것이 아닌 것 같습니다. –

+0

잘 모르겠다. 아니. 비디오를 확인하십시오 - Brent가 쓴 클래스는 db 관련 IIRC가 아닙니다. –

+0

트랜잭션 범위는 트랜잭션 내에서 작성하지 않은 .net 코드를 배치 할 수 있다는 점에서 훌륭합니다. –

관련 문제