คำถามติดแท็ก transactionscope

7
TransactionScope ส่งต่อไปยัง MSDTC ในเครื่องบางเครื่องโดยอัตโนมัติหรือไม่
ในโครงการของเราที่เรากำลังใช้ TransactionScope เพื่อให้แน่ใจว่าการเข้าถึงข้อมูลประสิทธิภาพชั้นของเราก็ดำเนินการในการทำธุรกรรม เรากำลังเล็งที่จะไม่จำเป็นต้องใช้บริการ MSDTC ที่จะเปิดใช้งานบนเครื่องของเรา end-user ปัญหาคือในครึ่งหนึ่งของเครื่องนักพัฒนาของเราเราสามารถเรียกใช้โดยปิดการใช้งาน MSDTC อีกครึ่งหนึ่งต้องเปิดใช้งานหรือพวกเขาได้รับข้อความข้อผิดพลาด"MSDTC บน [เซิร์ฟเวอร์] ไม่พร้อมใช้งาน" จริงๆมันมีฉันเกาหัวของฉันและฉันมีการพิจารณาอย่างจริงจังกลับไปกลิ้งบ้านปั่น TransactionScope เหมือนการแก้ปัญหาบนพื้นฐานของการทำธุรกรรมวัตถุ ADO.NET มันดูเหมือนว่าบ้า - รหัสเดียวกันที่ใช้งานได้ (และไม่เพิ่มขึ้น) ในครึ่งหนึ่งของผู้พัฒนาของเราไม่บานปลายบนผู้พัฒนารายอื่น ฉันหวังว่าจะได้คำตอบที่ดีกว่าในการติดตามว่าเหตุใดธุรกรรมจึงถูกส่งต่อไปยัง DTCแต่น่าเสียดายที่ไม่มี นี่เป็นบิตตัวอย่างของรหัสที่จะก่อให้เกิดปัญหาบนเครื่องที่พยายามที่จะบานปลายก็พยายามที่จะบานปลายที่สอง connection.Open () (และใช่จะไม่มีการเปิดการเชื่อมต่ออื่น ๆ ในเวลา.) using (TransactionScope transactionScope = new TransactionScope() { using (SqlConnection connection = new SqlConnection(_ConStr)) { using (SqlCommand command = connection.CreateCommand()) { …

3
SqlConnection จะเข้าร่วมใน TransactionScope Ambient โดยอัตโนมัติอย่างไร
SqlConnection มีความหมายว่าอะไร "เกณฑ์" ในการทำธุรกรรม? มันหมายความว่าคำสั่งที่ฉันใช้ในการเชื่อมต่อจะมีส่วนร่วมในการทำธุรกรรมหรือไม่? ถ้าเป็นเช่นนั้นภายใต้สถานการณ์ใด SqlConnection จะเข้าร่วมโดยอัตโนมัติในธุรกรรม TransactionScope แวดล้อม? ดูคำถามในความคิดเห็นของรหัส การเดาของฉันต่อคำตอบของคำถามแต่ละข้อนั้นตามด้วยคำถามแต่ละข้อในวงเล็บ สถานการณ์ที่ 1: การเปิดการเชื่อมต่อภายในขอบเขตการทำธุรกรรม using (TransactionScope scope = new TransactionScope()) using (SqlConnection conn = ConnectToDB()) { // Q1: Is connection automatically enlisted in transaction? (Yes?) // // Q2: If I open (and run commands on) a second connection now, …

3
รับ TransactionScope เพื่อทำงานกับ async / await
ฉันกำลังพยายามรวมasync/ awaitเข้ากับบัสบริการของเรา ผมดำเนินการSingleThreadSynchronizationContextบนพื้นฐานของตัวอย่างนี้http://blogs.msdn.com/b/pfxteam/archive/2012/01/20/10259049.aspx TransactionScopeและทำงานดียกเว้นสิ่งหนึ่งที่: ฉันรอคอยสิ่งที่อยู่ข้างในTransactionScopeและมันก็ทำลายTransactionScope. TransactionScopeไม่ได้ดูเหมือนว่าจะเล่นดีกับasync/ อย่างแน่นอนเพราะมันเก็บสิ่งในหัวข้อการใช้await ThreadStaticAttributeฉันได้รับข้อยกเว้นนี้: "TransactionScope ซ้อนไม่ถูกต้อง" ฉันพยายามบันทึกTransactionScopeข้อมูลก่อนจัดคิวงานและกู้คืนก่อนที่จะรัน แต่ดูเหมือนว่าจะไม่เปลี่ยนแปลงอะไรเลย และTransactionScopeโค้ดก็เป็นระเบียบดังนั้นจึงยากที่จะเข้าใจว่าเกิดอะไรขึ้น มีวิธีทำให้ใช้งานได้หรือไม่? มีทางเลือกอื่นให้TransactionScopeหรือไม่?

2
TransactionScope ย้อนธุรกรรมอย่างไร
ฉันกำลังเขียนการทดสอบการรวมซึ่งฉันจะแทรกวัตถุจำนวนหนึ่งลงในฐานข้อมูลจากนั้นตรวจสอบเพื่อให้แน่ใจว่าวิธีการของฉันดึงวัตถุเหล่านั้นมาหรือไม่ การเชื่อมต่อกับฐานข้อมูลของฉันคือผ่าน NHibernate ... และวิธีการสร้างการทดสอบตามปกติของฉันคือการทำสิ่งต่อไปนี้: NHibernateSession.BeginTransaction(); //use nhibernate to insert objects into database //retrieve objects via my method //verify actual objects returned are the same as those inserted NHibernateSession.RollbackTransaction(); อย่างไรก็ตามฉันเพิ่งค้นพบเกี่ยวกับTransactionScopeซึ่งเห็นได้ชัดว่าสามารถใช้เพื่อจุดประสงค์นี้ ... บางโค้ดตัวอย่างที่ฉันได้พบจะเป็นดังนี้: public static int AddDepartmentWithEmployees(Department dept) { int res = 0; DepartmentAdapter deptAdapter = new DepartmentAdapter(); EmployeeAdapter empAdapter = …

1
DatabaseBeginTransaction เทียบกับ Transaction.TransactionScope
อะไรคือความแตกต่างระหว่างSystem.Transactions.TransactionScopeEF6 Database.BeginTransaction? ใครช่วยยกตัวอย่างเล็กน้อยหรือแค่อธิบายว่าควรใช้อันไหนเมื่อมีความแตกต่างที่ชัดเจน PS: ในโครงการของฉันฉันใช้ EF6 ฉันได้อ่านเอกสารแล้ว แต่ก็ไม่ได้ช่วยอะไรมาก ค้นหาตัวอย่างด้วย แต่ค่อนข้างใช้SqlConnection.BeginTransactionและตอนนี้ MS ได้เปิดตัวสิ่งใหม่นี้Database.BeginTransactionใน EF6

10
ตัวจัดการธุรกรรมได้ปิดใช้งานการสนับสนุนสำหรับธุรกรรมระยะไกล / เครือข่าย
ฉันใช้ SQL Server และ ASP.NET ฉันมีฟังก์ชั่นดังต่อไปนี้: Using js = daoFactory.CreateJoinScope() Using tran = New Transactions.TransactionScope() '... tran.Complete() End Using End Using อย่างไรก็ตามข้อยกเว้น " ตัวจัดการธุรกรรมได้ปิดใช้งานการสนับสนุนธุรกรรมระยะไกล / เครือข่าย 'ถูกโยน. คำอธิบายของ JoinScope: Public Class JoinScope Implements IJoinScope Implements IDisposable '... End Class ฉันใช้วิธีนี้ในแอปพลิเคชันอื่นที่มีสภาพแวดล้อมเดียวกันโดยไม่มีปัญหา แต่ที่นี่ฉันมีปัญหานี้ ฉันจะแก้ไขปัญหานี้ได้อย่างไร
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.