EF Core执行含多用户自定义表类型参数存储过程报错求助
问题根因
报错是FromSqlRaw的参数传递逻辑错误导致:
FromSqlRaw的第二个参数为params object[]类型,你直接传入了完整的List<SqlParameter>集合,EF Core会将整个集合识别为单个参数尝试做类型映射,不存在SqlParameter[]对应的关系数据库类型,因此触发报错。- 你写的SQL语句仅配置了1个占位符
{0},但目标存储过程需要传入3个参数,占位符数量也不匹配。
修复方案
仅需要调整最后一行执行存储过程的代码,将参数列表转为数组传入,同时修改SQL为标准存储过程执行写法即可:
var data = _context.Data.FromSqlRaw("EXEC dbo.GetData @id_zmiennej, @lata, @okresy", parameters.ToArray()).ToList();
你之前配置的用户自定义表类型参数的SqlDbType = SqlDbType.Structured、TypeName = "[dbo].[TabIntType]"属性均符合要求,无需额外修改,调整后即可正常执行。
内容的提问来源于stack exchange,提问作者losiu900
相关产品推荐
相关产品推荐

