2016-10-26 4 views
2

내가 SQL 서버의 데이터베이스 액세스에 대한 엔티티 프레임 워크 (6)을 사용하여 프로젝트에 오전에 2012롤백 엔티티 프레임 워크 6

우리가 롤백 후 DB 컨텍스트의 상태에 관한 우리 팀에서 보류중인 토론. 롤백이 수행 된 후에 데이터베이스가 트랜잭션의 변경에 영향을받지 않는다는 것이 확실합니다. 그러나 문맥은 어떻습니까?

저는 DB 컨텍스트가 롤백되고 데이터베이스가 변경된다고 생각하는 팀에 있습니다. 즉, 롤백 트랜잭션의 변경 사항 중 일부가 컨텍스트에서 어딘가에 계속 숨어있을 위험이없는 컨텍스트에서 계속 작업하는 것이 안전하다고 생각합니다.

누군가가이 오리를 죽일 수 있습니까? 그렇다면 토론을 마무리 할 수 ​​있습니다. 나는 그것을 발견하지 않고 명확하고 명확한 답을 얻기 위해 높고 낮은 것을 잠재웠다.

나는 내 가정에서 틀린 것이고, 컨텍스트는 데이터베이스 변경뿐 아니라 롤백된다는 점에 실망 할 것입니다. 이는 일련의 복잡한 업데이트를 통해 반복을 중지하고 컨텍스트를 무시하고 업데이트 중 하나에서 롤백하는 경우 다시 시작해야 함을 의미합니다.

답변

3

롤백 후에도 사용할 수 있습니다. 데이터베이스 변경 사항 만 롤백되고 DbContextTransaction은 커밋되거나 롤백 된 후에 삭제됩니다.

아래와 같이 EF 6의 최신 트랜잭션 API를 사용할 수 있습니다.

using (var context = new YourContext()) 
      { 
       using (var dbContextTransaction = context.Database.BeginTransaction()) 
       { 
        try 
        { 
         //your db operations 

         context.SaveChanges(); 

         dbContextTransaction.Commit(); 
        } 
        catch (Exception) 
        { 
         dbContextTransaction.Rollback(); 
        } 
       } 
      } 

당신은 여기에 대한 자세한 내용을보실 수 있습니다 : Entity Framework Working with Transactions

+0

난 아직도이의 consequeses 확실하지 않다. 롤백 후에는 컨텍스트가 데이터베이스와 동기화되지 않습니다. 다음번에이 컨텍스트에서 SaveChanges 및 Commit이 수행됩니다. 이제 롤백 된 레코드가 데이터베이스에 통합됩니까? 다시 말해, 롤백 후 작업하기에 컨텍스트가 안전하지 않습니까? –

+0

'context'는 롤백 된 후에 사용할 수 있습니다. 즉,'context'는 다른 목적을 사용하는 것이 안전하므로'context'에 아무 것도하지 않습니다. 이것은'dbContextTransaction'에만 영향을 미치며 물론 데이터베이스 레코드. 이것에 대한 피드백은 – Sampath

+0

입니까? 이게 너를 돕지 않는다면, 나에게 말해줘. 그러면 나는이 지울 수있다. – Sampath

관련 문제