首页 > 解决方案 > DAPPER 参数类型错误,但没有抛出异常

问题描述

我有一些代码(使用 dapper)正在对我的数据库(ASE 12)执行查询。sql 有一个这样的 where 子句 where r.reg_id = @reg_id

现在在数据库中 reg_id 列是一种数字类型,长度为 6,Prec 18,比例为 0

在代码中,@reg_id 变量是一个 Int32,我希望在调用异步方法查询时会发生异常,但它永远不会出错......

问题我需要在 dapper 中设置一个设置/配置来获取数据类型错误以排除异常吗?

下面的代码将起作用,因为我将数据类型设置为十进制,但对于其他团队成员,我希望例外被踢出,以便他们知道问题是什么......有什么想法吗?

public async Task<IEnumerable<CentersForRegIdResponse>> Handle(CentersForRegIdQuery request, CancellationToken cancellationToken)
{
    StringBuilder sql = new StringBuilder();

    sql.Append(" SELECT c.ctr_id, RTRIM(LTRIM(c.ctr_shname)) AS ctr_shname, RTRIM(LTRIM(r.reg_name)) AS reg_name ");
    sql.Append(" FROM center c, ");
    sql.Append(" region r ");
    sql.Append(" WHERE c.jcc_active = 'Y' and c.reg_id = r.reg_id and r.reg_id = @reg_id ");
    sql.Append(" ORDER BY  c.ctr_shname ");

    string query = sql.ToString();

    // custom mapping
    _dapperTools.DapperCustomMapping<CentersForRegIdResponse>();

    try
    {
        using (IDbConnection dbConnection = _dapperTools._aseconnection)
        {
            // example get list of rows by args
            var arguments = new
            {
                @reg_id = request.RegId
            };
            IEnumerable<CentersForRegIdResponse> allRows =
                    await dbConnection.QueryAsync<CentersForRegIdResponse>(query, arguments);
            return allRows;
        }
    }
    catch (Exception ex)
    {
        _dapperTools.ReportSqlError(_log, query, ex);
        return null;
    }
}

public class CentersForRegIdQuery : IRequest<IEnumerable<CentersForRegIdResponse>>
{
    public Decimal RegId { get; set; }
}

标签: c#rdbms

解决方案


推荐阅读