AutoQuery не может запрашивать вложенный объект - PullRequest
0 голосов
/ 06 июля 2018

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 по 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 и ​​был фильтруемым. Что я не так понял?

Edit:

ОК, поэтому проблема в том, что оператор больше, чем не поддерживается.

Если я это сделаю:

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

Можно ли использовать больше, чем / меньше, чем в объединенном свойстве? Если нет, то как мне добавить это в себя?

: исправить

Я установил его на nullable int int? MajesticApiDataTF, а затем он заработал

1 Ответ

0 голосов
/ 06 июля 2018

Как вы можете подозревать, AutoQuery не поддерживает запросы к вложенным / ссылочным типам.

Также Объединения в AutoQuery должны следовать неявным ссылочным соглашениям , которые должны существовать в двух объединяемых таблицах, они не запрашивают и не изменяют способ загрузки или фильтрации ссылочных данных.

AutoQuery позволяет только запрашивать целевой тип (в данном случае Домен), нет возможности фильтровать загруженные ссылочные типы.

...