У меня есть запрос, используя Npgsql
и Postgres
.Для построения моего запроса я использую Dapper и его SqlBuilder.
Когда я делаю нормальный оператор в БД, он возвращает правильный результат.Когда я делаю это через SqlBuilder, он возвращает неправильный результат.
Я пробовал другим способом, изменил addTemplate
или параметры, но ничего не изменилось.
Также я пробовализменить строку builder.Where("period = @period", new { model.Period });
по-разному:
builder.Where("period = @Period", new { model.Period });
builder.Where("period = period", new { model.Period });
builder.Where("period = @TestPeriod", new { TestPeriod = model.Period });
Или это более распространенный способ:
builder.Where("period = '" + model.Period + "'");
using (NpgsqlConnection con = Helper.GetNpgsqlConnection())
{
var builder = new SqlBuilder();
var selector = builder.AddTemplate("SELECT * FROM szzRecord.folders /**where**/");
if (model.Period != null)
builder.Where("period = @period", new { model.Period });
var result = con.Query(selector.RawSql);
return result;
}
Результат собычный запрос sql, например: SELECT * FROM szzRecord.folders WHERE period = 24
возвращает 251 строку - это правильно.
Результат с более щадящим запросом - 1223, все строки.Так что, похоже, этот параметр не существует.Ожидая selector
, я нахожу свой параметр для period
.Я нашел Period = 24
в selector.parameters.templates[0]
.Это правильно?selector.parameters.parameters
пусто.