自动查询找不到字段
我有以下几个方面:
[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在自动查询查看器中进行查询时,
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
是否可以在连接的属性上使用大于/小于的值?如果没有,我该如何添加呢?
:修复
我将其设置为可为null的int int? MajesticApiDataTF
,然后它起作用了
答案 0 :(得分:1)
您可能会怀疑,AutoQuery不支持查询嵌套/引用类型。
Joins in AutoQuery还需要遵循连接的2个表中必须存在的implicit Reference conventions,它们不查询或更改加载或过滤引用数据的方式。
“自动查询”仅允许您查询目标类型(在本例中为“域”),无法过滤已加载的引用类型。