У меня есть немного кода (используя 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; }
}