ฉันโพสต์วิธีแก้ปัญหาด้านล่างที่นี่เพราะหลังจากการค้นหาบางครั้งนี่คือที่ที่ฉันไปถึงคนอื่น ๆ ก็อาจเช่นกัน ผมพยายามที่จะใช้ EF 6 ที่จะเรียกเก็บขั้นตอน แต่มีข้อผิดพลาดที่คล้ายกันเพราะขั้นตอนการเก็บเพิ่งเซิร์ฟเวอร์ที่เชื่อมโยงถูกนำมาใช้
ไม่สามารถดำเนินการได้เนื่องจากผู้ให้บริการ OLE DB สำหรับเซิร์ฟเวอร์ที่เชื่อมโยง _ ไม่สามารถเริ่มธุรกรรมแบบกระจายได้
ผู้จัดการธุรกรรมของพันธมิตรได้ปิดใช้งานการสนับสนุนธุรกรรมระยะไกล / เครือข่าย *
การข้ามไปที่ไคลเอนต์ SQLช่วยแก้ปัญหาของฉันซึ่งยังยืนยันสำหรับฉันว่ามันเป็นสิ่งที่ EF
ความพยายามตามวิธีการสร้างแบบจำลอง EF:
db.SomeStoredProcedure();
ความพยายามตาม ExecuteSqlCommand:
db.Database.ExecuteSqlCommand("exec [SomeDB].[dbo].[SomeStoredProcedure]");
ด้วย:
var connectionString = db.Database.Connection.ConnectionString;
var connection = new System.Data.SqlClient.SqlConnection(connectionString);
var cmd = connection.CreateCommand();
cmd.CommandText = "exec [SomeDB].[dbo].[SomeStoredProcedure]";
connection.Open();
var result = cmd.ExecuteNonQuery();
โค้ดนั้นสามารถย่อได้ แต่ฉันคิดว่าเวอร์ชันนั้นสะดวกกว่าเล็กน้อยสำหรับการดีบั๊กและการก้าวผ่าน
ฉันไม่เชื่อว่าไคลเอ็นต์ Sql จำเป็นต้องเป็นตัวเลือกที่ต้องการ แต่ฉันรู้สึกว่าอย่างน้อยก็คุ้มค่าที่จะแบ่งปันหากใครก็ตามที่มีปัญหาคล้าย ๆ กันจะถูกเข้ามาที่นี่โดย Google
รหัสข้างต้นคือ C # แต่แนวคิดของการพยายามเปลี่ยนไปใช้ Sql Client ยังคงมีผลบังคับใช้ อย่างน้อยที่สุดก็จะได้รับการวินิจฉัยเพื่อพยายามทำเช่นนั้น