1

自动查询找不到字段

我有以下课程:

[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; }
}

当我尝试通过 TF 在 AutoQuery 查看器中查询时,如下所示:

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

是否可以在联合属性上使用大于/小于?如果不是,我该如何添加自己?

:使固定

我将它设置为可为空的 intint? MajesticApiDataTF然后它工作

4

1 回答 1

1

您可能会怀疑,AutoQuery不支持查询嵌套/引用类型。

此外,AutoQuery 中的联接需要遵循被联接的 2 个表中必须存在的隐式引用约定,它们不会查询或更改引用数据的加载或过滤方式。

AutoQuery 仅允许您查询目标类型(在本例中为域),无法过滤加载的引用类型。

于 2018-07-06T06:36:03.380 回答