System.Transactions.TransactionScope
과 EF6의 차이점은 무엇입니까 Database.BeginTransaction
?
누군가가 작은 예를 들어 주거나 분명한 차이가있을 때 사용할 것을 설명 할 수 있습니까?
추신 : 내 프로젝트에서는 EF6를 사용하고 있습니다. 나는 이미 문서를 읽었지만 그다지 도움이되지 않았습니다. 또한 예제를 찾았지만 오히려 사용 SqlConnection.BeginTransaction
하고 있으며 이제 MS는 Database.BeginTransaction
EF6 에서이 새로운 것을 도입했습니다 .
답변
Entity Framework 6의 설명서에서 답을 찾았습니다.
EF6의 도입과 함께 Microsoft는 새로운 API 메서드 Database.BeginTransaction()
및 Database.UseTransaction()
. System.Transactions.TransactionScope
여전히 잘 지원 되지만 대부분의 EF6 사용자에게는 더 이상 필요 하지 않습니다 .
반면 Database.BeginTransaction()
데이터베이스 관련 작업 트랜잭션에만 사용되며 System.Transactions.TransactionScope
, 그 외에도 ‘일반 C # 코드’도 트랜잭션이 될 수 있습니다.
따라서 Database.BeginTransaction()
EF6의 트랜잭션에서 db 관련 작업 만 수행 하는 곳에서 사용하십시오.System.Transactions.TransactionScope
db 작업과 C # 코드를 함께 혼합하는 데 사용합니다.
여전히 TransactionScope
접근 방식을 선호하는 사람들에게는 특히 클라우드 시나리오에서 제한 사항을 확인하는 것이 좋습니다 (클라우드 시나리오는 분산 트랜잭션을 지원하지 않음).