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

.NET MVC开发仓储方法时报“Argument 1 cannot convert from string to System.Type”如何解决

报错根因
  • 你调用的Database.SqlQuery方法没有显式指定返回实体的泛型参数,触发了非泛型重载的匹配逻辑:非泛型SqlQuery的第一个入参要求是System.Type类型,用于声明返回结果的映射类型,你直接传入了存储过程名字符串,触发类型转换报错。
  • 附加问题:SqlQuery方法默认返回的是DbRawSqlQuery类型,不能直接赋值给IQueryable类型变量,需要显式转换。
修复方案

修改后代码如下:

public IQueryable<sp_GetAllRecordStages_Result> ExecuteSpStageView(DbContext dbcontext, string orderno)
{
    // 显式指定泛型参数匹配返回实体类型,参数用SqlParameter标准化声明
    var result = dbcontext.Database.SqlQuery<sp_GetAllRecordStages_Result>(
        "sp_GetAllRecordStages @orderno", 
        new SqlParameter("@orderno", orderno)
    );
    // 转换为IQueryable类型返回
    return result.AsQueryable();
}

补充说明:如果业务不需要IQueryable的延迟查询特性,可以直接将方法返回值改为IEnumerable<sp_GetAllRecordStages_Result>,省略AsQueryable()调用即可。

内容的提问来源于stack exchange,提问作者Hitendra

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 07:42:00