AutoQuery не может запрашивать вложенный объект
Автозапрос не смог найти поле
У меня есть следующие предложения:
[Route("/query/domains")]
public class QueryDomains : QueryDb<Domain, DomainList>
{
public int MajesticApiDataTF { get; set; }
}
public class DomainList
{
public string DomainName { get; set; }
public int MajesticApiDataTF { get; set; }
}
[Route("/domain/{Id}")]
public class Domain : IReturn<DomainResponse>
{
[AutoIncrement]
public int Id { get; set; }
[Index(Unique = true)]
[StringLength(70)]
public string DomainName { get; set; }
[Reference]
public MajesticApiData MajesticApiData { get; set; }
}
public class MajesticApiData
{
[AutoIncrement]
public int Id { get; set; }
public int TF { get; set; }
[ForeignKey(typeof(Domain), OnDelete = "CASCADE")]
public int DomainId { get; set; }
}
Когда я пытаюсь запросить в AutoQuery Viewer по TF, как это:
http://localhost:5000/query/domains?MajesticApiDataTF%3E=1&MajesticApiDataTF%3E=1
Все результаты домена возвращаются без фильтрации, и каждое значение TF показывает 0.
Я попытался добавить IJoin:
public class QueryDomains : QueryDb<Domain, DomainList>, IJoin<Domain, MajesticApiData>
Но тогда запрос не возвращает результатов.
Я проверил в базе данных и TF имеет значение. Я использую провайдера PostgreSql.
Я хочу, чтобы он показал значение TF и был фильтруемым. Что я не так понял?
Редактировать:
Итак, проблема в том, что оператор больше чем не поддерживается.
Если я сделаю:
query/domains?MajesticApiDataTF>5&include=Total
Тогда отладочный вывод показывает
2018-07-07 01:54:00.1555||DEBUG|OrmLiteReadCommandExtensions|SQL: SELECT COUNT(*) "COUNT(*)"
FROM "domain" INNER JOIN "majestic_api_data" ON
("domain"."id" = "majestic_api_data"."domain_id")
WHERE "majestic_api_data"."tf" = :0
PARAMS: :0=0
Но если я сделаю:
query/domains?MajesticApiDataTF=5&include=Total
Затем передается значение параметра.
2018-07-07 01:57:08.7809||DEBUG|OrmLiteReadCommandExtensions|SQL: SELECT COUNT(*) "COUNT(*)"
FROM "domain" INNER JOIN "majestic_api_data" ON
("domain"."id" = "majestic_api_data"."domain_id")
WHERE "majestic_api_data"."tf" = :0
PARAMS: :0=5
Можно ли использовать больше, чем / меньше, чем в объединенном свойстве? Если нет, то как мне добавить это в себя?
: исправить
Я установил его в обнуляемый Int int? MajesticApiDataTF
и тогда это сработало
1 ответ
Как вы можете подозревать, AutoQuery не поддерживает запросы к вложенным / ссылочным типам.
Кроме того, соединения в AutoQuery должны следовать неявным ссылочным соглашениям, которые должны существовать в двух объединяемых таблицах, они не запрашивают и не изменяют способ загрузки или фильтрации ссылочных данных.
AutoQuery позволяет только запрашивать целевой тип (в данном случае Домен), нет возможности фильтровать загруженные ссылочные типы.