使用响应 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; }
}