使用响应 DTO 时 Autquery 不包括嵌套结果
Autquery not including nested result when using a response DTO
假设您有这些模型:
public class Blog
{
[PrimaryKey]
[AutoIncrement]
public int Id { get; set; }
public string Url { get; set; }
public string PrivateField { get; set; }
[Reference]
public List<BlogToBlogCategory> BlogToBlogCategories { get; set; }
}
public class BlogResponse
{
public int Id { get; set; }
public string Url { get; set; }
public List<BlogToBlogCategory> BlogToBlogCategories { get; set; }
}
而这个请求:
public class BlogsLookUpRequest : QueryDb<Blog, BlogResponse>
{
}
return 值将 BlogToBlogCategories
设为 null,但此请求:
public class BlogsLookUpRequest : QueryDb<Blog>
{
}
将填充 BlogToBlogCategories
。我可以像这样使用自定义实现手动创建查询响应:
var q = _autoQuery.CreateQuery(request, Request.GetRequestParams(), base.Request);
var results = _autoQuery.Execute(request,q, base.Request);
return new QueryResponse<ResponseBlog>()
{
Results = results.Results.ConvertTo<List<ResponseBlog>>(),
Offset = request.Skip,
Total = results.Total
};
那么它就会有嵌套的结果。如果我用 [Reference]
装饰集合,那么它会尝试在不存在的 BlogResponse
table.
上查找外键
为什么在使用 AutoQuery 指定 return 模型时会删除引用的结果?有没有办法对其进行标记以使其有效?
POCO Reference Types 用于填充数据模型而不是临时响应 DTO。
在这种情况下,它试图解析对不存在的 table 的引用,您可以使用 [Alias]
属性指定 DTO 映射到哪个 table,例如:
[Alias(nameof(Blog))]
public class BlogResponse
{
public int Id { get; set; }
public string Url { get; set; }
public List<BlogToBlogCategory> BlogToBlogCategories { get; set; }
}
假设您有这些模型:
public class Blog
{
[PrimaryKey]
[AutoIncrement]
public int Id { get; set; }
public string Url { get; set; }
public string PrivateField { get; set; }
[Reference]
public List<BlogToBlogCategory> BlogToBlogCategories { get; set; }
}
public class BlogResponse
{
public int Id { get; set; }
public string Url { get; set; }
public List<BlogToBlogCategory> BlogToBlogCategories { get; set; }
}
而这个请求:
public class BlogsLookUpRequest : QueryDb<Blog, BlogResponse>
{
}
return 值将 BlogToBlogCategories
设为 null,但此请求:
public class BlogsLookUpRequest : QueryDb<Blog>
{
}
将填充 BlogToBlogCategories
。我可以像这样使用自定义实现手动创建查询响应:
var q = _autoQuery.CreateQuery(request, Request.GetRequestParams(), base.Request);
var results = _autoQuery.Execute(request,q, base.Request);
return new QueryResponse<ResponseBlog>()
{
Results = results.Results.ConvertTo<List<ResponseBlog>>(),
Offset = request.Skip,
Total = results.Total
};
那么它就会有嵌套的结果。如果我用 [Reference]
装饰集合,那么它会尝试在不存在的 BlogResponse
table.
为什么在使用 AutoQuery 指定 return 模型时会删除引用的结果?有没有办法对其进行标记以使其有效?
POCO Reference Types 用于填充数据模型而不是临时响应 DTO。
在这种情况下,它试图解析对不存在的 table 的引用,您可以使用 [Alias]
属性指定 DTO 映射到哪个 table,例如:
[Alias(nameof(Blog))]
public class BlogResponse
{
public int Id { get; set; }
public string Url { get; set; }
public List<BlogToBlogCategory> BlogToBlogCategories { get; set; }
}