У меня есть эта реализация автозапроса
var q = AutoQuery.CreateQuery(request, base.Request).SelectDistinct();
var results = Db.Select<ProductDto>(q);
return new QueryResponse<ProductDto>
{
Offset = q.Offset.GetValueOrDefault(0),
Total = (int)Db.Count(q),
Results = results
};
В запросе есть несколько объединений:
public class ProductSearchRequest : QueryDb<GardnerRecord, ProductDto>
, ILeftJoin<GardnerRecord, RecordToBicCode>, ILeftJoin<RecordToBicCode, GardnerBicCode>
{
}
Записи возвращаются правильно, но общее количество неверно. Я могу видеть 40 000 записей в базе данных, но это говорит мне, что есть 90 000. Существует несколько RecordToBicCode
для каждого GardnerRecord
, поэтому он дает мне количество записей, умноженное на число RecordToBicCode
.
Как мне сопоставить общее число с числом GardnerRecord
, соответствующим запросу?
Я использую PostgreSQL, поэтому нужно, чтобы выражение count было похоже на
select count(distinct r.id) from gardner_record r etc...
У Dores OrmLite есть способ сделать это?
Я пытался:
var q2 = q;
q2.SelectExpression = "select count(distinct \"gardner_record\".\"id\")";
q2.OrderByExpression = null;
var count = Db.Select<int>(q2);
Но я получаю ссылку на объект, а не установленную ошибку.