C# EF:执行命令时,参数必须是数据库参数或值
执行不带返回值但具有如下用户定义表类型的存储过程时:C# EF:执行命令时,参数必须是数据库参数或值,c#,sql-server,entity-framework,stored-procedures,C#,Sql Server,Entity Framework,Stored Procedures,执行不带返回值但具有如下用户定义表类型的存储过程时: var dbStrings = new SqlParameter("@data", SqlDbType.Structured) { TypeName = new StringListType().Name, Value = new StringListType().DataRecordsFrom(listOfStrings.Select(p => p.Value).ToList()) }; _dbContext.Dat
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
执行存储过程?在这种情况下,您需要(如错误消息所示)创建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);
这应该会有所帮助