Аргумент DAPPER имеет неправильный тип, но исключение не выдано - PullRequest
1 голос
/ 26 апреля 2019

У меня есть немного кода (используя dapper), который выполняет запрос к моей базе данных (ASE 12). В sql есть предложение 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; }
}
...