ฉันพบคำตอบในเอกสารประกอบของ 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
แนวทางนี้ขอแนะนำให้ตรวจสอบข้อ จำกัด โดยเฉพาะอย่างยิ่งในสถานการณ์ระบบคลาวด์ (สถานการณ์ระบบคลาวด์ไม่รองรับธุรกรรมแบบกระจาย)
สามารถดูข้อมูลเพิ่มเติมได้ที่นี่