我遇到了實體框架(EF)中ExecuteSqlCommand()方法的問題。我有以下SQL Server存儲過程:實體框架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參數不會丟失,並且具有有效值。有任何想法嗎?
更新:
這裏是SQL Server上運行SQL:
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);'? – 2015-03-31 20:15:11
我試過了,它仍然失敗,我相信它是生成的SQL的東西 – Halcyon 2015-03-31 21:04:26