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

ASP.NET Core 6中OracleDynamicParameters未找到错误的解决方法

解决Dapper调用Oracle存储过程时OracleDynamicParameters找不到的问题

错误原因

OracleDynamicParameters并非Dapper或Oracle.ManagedDataAccess.Core的内置类型,它是Dapper的Oracle专用扩展包提供的,你当前未安装该扩展,因此出现类型找不到的编译错误。

解决方案一:安装Dapper.Oracle扩展包

  1. 安装扩展包
    通过NuGet包管理器控制台执行:

    Install-Package Dapper.Oracle
    

    或使用.NET CLI命令:

    dotnet add package Dapper.Oracle
    

    如果你使用的是Oracle.ManagedDataAccess.Core,更推荐适配性更好的Dapper.Oracle.Managed包:

    dotnet add package Dapper.Oracle.Managed
    
  2. 添加命名空间引用
    在你的C#代码文件顶部补充引用:

    using Dapper.Oracle;
    

解决方案二:不依赖扩展包,用原生参数实现

如果不想安装额外包,可以直接使用Dapper或Oracle原生的参数类型:

方法1:使用Dapper的DynamicParameters

var parameters = new DynamicParameters();
parameters.Add("sUserID", sUserID, DbType.String, ParameterDirection.Input);
parameters.Add("rResultSet", dbType: DbType.Object, direction: ParameterDirection.Output);

方法2:使用OracleParameter数组

var parameters = new OracleParameter[]
{
    new OracleParameter("sUserID", OracleDbType.Varchar2, sUserID, ParameterDirection.Input),
    new OracleParameter("rResultSet", OracleDbType.RefCursor, ParameterDirection.Output)
};

额外代码修正提示

你的代码存在两处逻辑错误,需要同步修正:

  1. 变量名不匹配:if (fcubsHeader != null) 中的fcubsHeader应为student,需和前面查询结果的变量名保持一致
  2. 异常处理逻辑冲突:return response;后又执行throw;,会导致返回响应后再次抛出异常,需移除throw;语句

修正后的核心代码片段:

var student = await _dbConnection.QueryFirstOrDefaultAsync<StudentResponse>(query, parameters, commandType: CommandType.StoredProcedure);

if (student != null)
{
    var studentDtos = _mapper.Map<StudentResponseDto>(student);
    response.Successful = true;
    response.Data = studentDtos;
    response.StatusCode = (int)HttpStatusCode.OK;
    return response;
}
else
{
    response.Message = $"Data Not Found!";
    response.Successful = true;
    response.StatusCode = (int)HttpStatusCode.NoContent;
    return response;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 11:49:51