Poniższe rozwiązanie zamieszczam tutaj, bo po kilku poszukiwaniach właśnie tu wylądowałem, więc inne też mogą. Próbowałem użyć EF 6 do wywołania procedury składowanej, ale wystąpił podobny błąd, ponieważ procedura składowana miała używany serwer połączony .
Nie można wykonać operacji, ponieważ dostawca OLE DB _ dla serwera połączonego _ nie mógł rozpocząć transakcji rozproszonej
Menedżer transakcji partnera wyłączył obsługę transakcji zdalnych / sieciowych *
Przeskakuję do klienta SQL rozwiązało mój problem, co również potwierdziło, że jest to sprawa EF.
Próba oparta na metodzie wygenerowanej przez model EF:
db.SomeStoredProcedure();
Próba oparta na ExecuteSqlCommand:
db.Database.ExecuteSqlCommand("exec [SomeDB].[dbo].[SomeStoredProcedure]");
Z:
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();
Ten kod można skrócić, ale myślę, że ta wersja jest nieco wygodniejsza do debugowania i przechodzenia przez nią.
Nie wierzę, że Sql Client jest koniecznie preferowanym wyborem, ale czułem, że warto się tym podzielić, jeśli ktoś inny mający podobne problemy zostanie tutaj wylądowany przez Google.
Powyższy kod to C #, ale koncepcja próby przełączenia się na klienta Sql nadal obowiązuje. Przynajmniej próba zrobienia tego będzie miała charakter diagnostyczny.