2015-03-31 4 views
0

У меня возникла проблема с методом 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 
+1

Работает ли если youwrite это как 'ExecuteSqlCommand (SQL, новый SqlParameter ("@ Id", 1), новый SqlParameter ("@ SomeData", "Это некоторые случайные данные"), новый SqlParameter (" @ UserId ", 500);'? –

+0

Я пробовал это, и он все еще терпит неудачу. Я считаю, что это что-то с созданным SQL. – Halcyon

ответ

1
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>()); 

Удалите @ префикс внутри SqlParameter.

+0

Это не имеет никакого значения. См. Мое редактирование для сгенерированного SQL. – Halcyon

+0

Удалили ли вы @prefix Ваш сгенерированный SQL все еще показывает это. –

Смежные вопросы