当执行没有返回值但具有用户定义的表类型的存储过程时:
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);
我收到错误
执行命令时,参数必须仅是数据库参数或值
如何通过具有多个输入参数(某些UDTT)的DbContext
执行存储过程?
答案 0 :(得分:1)
在这种情况下,您需要(根据错误消息告诉您)创建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);