Я выкладываю нижеприведенное решение здесь, потому что после некоторых поисков именно там я и приземлился, так что другие тоже могут. Я пытался использовать 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 Client обязательно является предпочтительным выбором, но я чувствовал, что по крайней мере стоит поделиться им, если кто-то, имеющий подобные проблемы, попадет сюда через Google.