当执行没有返回值但使用用户定义的表类型的存储过程时,如下所示:
var dbStrings = new SqlParameter("@data", SqlDbType.Structured)
{
TypeName = new StringListType().Name,
Value = new StringListType().DataRecordsFrom(listOfStrings.Select(p => p.Value).ToList())
};
_dbContext.Database.ExecuteSqlCommand("exec [dbo].[InsertRecords] @SID, @filerType, @data", sid.ToString(), "Field", dbStrings);
我收到错误
When executing a command, parameters must be exclusively database parameters or values
如何通过具有多个输入参数(某些 UDTT)的 DbContext
执行存储过程?
最佳答案
在这种情况下,您需要(如错误消息告诉您)创建一个 SqlParameter
数组,并在调用 ExecuteSqlCommand
时传递该数组。
var sqlParams = new SqlParameter[]
{
new SqlParameter("@SID", sid.ToString()),
new SqlParameter("@filterType", "Pin"),
new SqlParameter("@data", SqlDbType.Structured)
{
TypeName = new StringListType().Name,
Value = new StringListType().DataRecordsFrom(listOfStrings.Select(p => p.Value).ToList())
}
};
_dbContext.Database.ExecuteSqlCommand("exec [dbo].[InsertRecords] @SID, @filterType, @data", sqlParams);
关于c# - EF : When executing a command, 参数必须完全是数据库参数或值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51750922/