Одна из причин сбоя, которую я вижу здесь, заключается в том, что порядок параметров не тот, который вы думаете; в SSMS вы передаете параметры по name , но в C# вы передаете их по position ; возможно, попробуйте назвать их при использовании exec
?
tempspexec = DbContext.Database
.SqlQuery<StoredProcDataExecution>("exec GetWorkOrderChartDataAsync @targetType=@targetType, @targeID=@targeID, @startDateToUse=@startDateToUse, @problemID=@problemID, @tradeID=@tradeID", param1, param2, param3, param4, param5
).ToList();
Обратите внимание, что было бы намного чище, если бы вы сказали SqlQuery
, что вы вызываете хранимую процедуру; тогда вам это вообще не нужно, так как «по имени» является значением по умолчанию для SqlClient, если тип команды является хранимой процедурой.
В качестве отступления: вы могли бы найти инструменты например, Dapper проще для этого:
tempspexec = conn.Query<StoredProcDataExecution>("GetWorkOrderChartDataAsync",
new { // parameters
targetType=28, targeID=targetID, startDateToUse="2019",
problemID=problemId1, tradeID=tradeId1
}, commandType: CommandType.StoredProcedure).AsList();