У меня возникла проблема с методом ExecuteSqlCommand() в Entity Framework (EF). У меня есть следующая хранимая процедура SQL Server:Entity Framework ExecuteSqlCommand Отсутствует входной параметр
EXEC SomeSchema.SomeTableInsert
@Id = 1,
@SomeData = 'This is some random data',
@UserId = 500
и он работает без проблем. Когда я пытаюсь использовать метод EF в ExecuteSqlCommand(), я получаю следующее сообщение об ошибке:
Procedure or function 'SomeTableInsert' expects parameter '@UserId', which was not supplied.
Здесь C# код:
var sql = "SomeSchema.SomeTableInsert @Id, @SomeData, @UserId";
var sqlParameters = new List<SqlParameter>
{
new SqlParameter("@Id", 1),
new SqlParameter("@SomeData", "This is some random data"),
new SqlParameter("@UserId", 500)
};
dbContext.Database.ExecuteSqlCommand(sql, sqlParameters.ToArray<object>());
Я не понимаю, почему я получаю эту ошибку. Параметр UserId отсутствует, и он имеет допустимое значение. Есть идеи?
Update:
Вот SQL, который выполняется на SQL Server:
exec sp_executesql
N'SomeSchema.SomeTableInsert @Id, @SomeData, @UserId',
N'@Id int,@SomeData nvarchar(5),@UserId int',
@Id=1,
@SomeData='This is some random data',
@UserId=500
Работает ли если youwrite это как 'ExecuteSqlCommand (SQL, новый SqlParameter ("@ Id", 1), новый SqlParameter ("@ SomeData", "Это некоторые случайные данные"), новый SqlParameter (" @ UserId ", 500);'? –
Я пробовал это, и он все еще терпит неудачу. Я считаю, что это что-то с созданным SQL. – Halcyon