ฉันพบคำตอบในเอกสารประกอบของ Entity Framework 6:
ด้วยการเปิดตัว EF6 Microsoft แนะนำให้ใช้วิธีการ API ใหม่: Database.BeginTransaction()และDatabase.UseTransaction(). แม้ว่าSystem.Transactions.TransactionScopeจะยังคงได้รับการสนับสนุนเป็นอย่างดี แต่ก็ไม่จำเป็นสำหรับผู้ใช้ EF6 ส่วนใหญ่อีกต่อไป
แม้ว่าDatabase.BeginTransaction()จะใช้สำหรับธุรกรรมการดำเนินการที่เกี่ยวข้องกับฐานข้อมูลเท่านั้นSystem.Transactions.TransactionScopeนอกจากนั้นยังทำให้ 'รหัส C # ธรรมดา' สามารถทำธุรกรรมได้ด้วย
ดังนั้นใช้ในDatabase.BeginTransaction()กรณีที่เคยทำเฉพาะการดำเนินการที่เกี่ยวข้องกับ db ในธุรกรรมใน EF6 หรือใช้System.Transactions.TransactionScopeสำหรับการผสมการดำเนินการ db และรหัส C # เข้าด้วยกันในธุรกรรม
สำหรับผู้ที่ยังคงชอบTransactionScopeแนวทางนี้ขอแนะนำให้ตรวจสอบข้อ จำกัด โดยเฉพาะอย่างยิ่งในสถานการณ์ระบบคลาวด์ (สถานการณ์ระบบคลาวด์ไม่รองรับธุรกรรมแบบกระจาย)
สามารถดูข้อมูลเพิ่มเติมได้ที่นี่