AutoQuery 无法查询嵌套对象
AutoQuery can't query nested object
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; }
}
当我尝试像这样通过 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>
但是后来查询returns没有结果。
我已经检查过数据库,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
然后传了一个param值
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
是否可以使用比连接的 属性 更大的 than/less?如果不是,我该如何在自己中添加它?
:修正
我将它设置为可为空的 int int? MajesticApiDataTF
然后它起作用了
如您所料,AutoQuery 不支持查询 nested/referenced 类型。
另外 Joins in AutoQuery need to follow the implicit Reference conventions 必须存在于被连接的 2 个表中,它们不会查询或更改引用数据的加载或过滤方式。
AutoQuery 仅允许您查询目标类型(在本例中为域),无法过滤加载的引用类型。
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; }
}
当我尝试像这样通过 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>
但是后来查询returns没有结果。
我已经检查过数据库,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
然后传了一个param值
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
是否可以使用比连接的 属性 更大的 than/less?如果不是,我该如何在自己中添加它?
:修正
我将它设置为可为空的 int int? MajesticApiDataTF
然后它起作用了
如您所料,AutoQuery 不支持查询 nested/referenced 类型。
另外 Joins in AutoQuery need to follow the implicit Reference conventions 必须存在于被连接的 2 个表中,它们不会查询或更改引用数据的加载或过滤方式。
AutoQuery 仅允许您查询目标类型(在本例中为域),无法过滤加载的引用类型。