Saya memposting solusi di bawah ini di sini karena setelah beberapa pencarian di sinilah saya mendarat, jadi yang lain mungkin juga. Saya mencoba menggunakan EF 6 untuk memanggil prosedur tersimpan, tetapi mengalami kesalahan serupa karena prosedur tersimpan memiliki server yang ditautkan sedang digunakan.
Operasi tidak dapat dilakukan karena penyedia OLE DB _ untuk server tertaut _ tidak dapat memulai transaksi terdistribusi
Manajer transaksi mitra telah menonaktifkan dukungannya untuk transaksi jarak jauh / jaringan *
Beralih ke SQL Client memang memperbaiki masalah saya, yang juga mengonfirmasi bagi saya bahwa itu adalah masalah EF.
Model EF menghasilkan upaya berbasis metode:
db.SomeStoredProcedure();
Upaya berbasis ExecuteSqlCommand:
db.Database.ExecuteSqlCommand("exec [SomeDB].[dbo].[SomeStoredProcedure]");
Dengan:
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();
Kode itu dapat dipersingkat, tetapi menurut saya versi itu sedikit lebih nyaman untuk debugging dan melangkah melalui.
Saya tidak percaya bahwa Klien Sql selalu merupakan pilihan yang disukai, tetapi saya merasa ini setidaknya layak dibagikan jika ada orang lain yang memiliki masalah serupa yang dibawa ke sini oleh google.
Kode di atas adalah C #, tetapi konsep mencoba untuk beralih ke Klien Sql masih berlaku. Setidaknya itu akan mendiagnosis untuk mencoba melakukannya.