53

System.Transactions.TransactionScope과 EF6의 Database.BeginTransaction의 차이점은 무엇입니까?Database.BeginTransaction 대 ​​Transactions.TransactionScope

누군가가 작은 예제를 주거나 명확한 차이가있을 때 사용할 예제를 설명해 줄 수 있습니까?

추신 : 내 프로젝트에서 EF6을 사용하고 있습니다. 나는 이미 문서를 읽었지만 많은 도움이되지 못했다. 또한 예제를 찾아 보았지만 그들은 SqlConnection.BeginTransaction을 사용하고 있으며 이제 MS는 EF6에이 새로운 Database.BeginTransaction을 도입했습니다.

답변

66

내가 엔티티 프레임 워크 (6)의 설명서에서 답을 발견 : Database.BeginTransaction()Database.UseTransaction() : EF6의 도입으로

를, 마이크로 소프트는 새로운 API 방법을 사용하는 것이 좋습니다. System.Transactions.TransactionScope은 여전히 ​​잘 지원되지만 EF6을 사용하는 대부분의 사용자에게는이 더 이상 이 필요하지 않습니다.

Database.BeginTransaction()은 데이터베이스 관련 작업 트랜잭션에만 사용되지만 System.Transactions.TransactionScope과 더불어 '일반 C# 코드'도 트랜잭션이 가능합니다.

그러므로 Database.BeginTransaction()을 사용하십시오. EF6에서는 트랜잭션에서 db 관련 작업 만 수행하고 그렇지 않은 경우 System.Transactions.TransactionScope을 사용하여 트랜잭션에서 db 작업과 C# 코드를 함께 사용하십시오.

여전히 TransactionScope 접근 방식을 선호하는 사람들은 특히 클라우드 시나리오 (클라우드 시나리오는 분산 트랜잭션을 지원하지 않음)에서 제한 사항을 체크 아웃하는 것이 좋습니다.

자세한 내용은 here