You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

EF Core执行含多用户自定义表类型参数存储过程报错求助

问题根因

报错是FromSqlRaw的参数传递逻辑错误导致:

  1. FromSqlRaw的第二个参数为params object[]类型,你直接传入了完整的List<SqlParameter>集合,EF Core会将整个集合识别为单个参数尝试做类型映射,不存在SqlParameter[]对应的关系数据库类型,因此触发报错。
  2. 你写的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 05:45:04