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 позволяет только запрашивать целевой тип (в данном случае Домен), нет возможности фильтровать загруженные ссылочные типы.

Другие вопросы по тегам