IPP.NET c#SDK允许查询筛选器,但这不会减少负载吗

本文关键字:负载 筛选 c#SDK NET 许查询 查询 IPP | 更新日期: 2023-09-27 18:01:04

参考以下IPP文档:

https://developer.intuit.com/docs/0025_quickbooksapi/0055_devkits/0150_ipp_.net_devkit_3.0/query_filters

我假设使用Linq扩展投影的以下代码将通过仅查询请求的字段并仅在响应中包括这些字段(窄结果集(来更改请求并减少响应的有效载荷:

public List<ShortAccount> GetFullShortAccountList(bool logRequestResponse)
{
    var accounts = new List<ShortAccount>();        
    var accountQueryService = new QueryService<Account>
                                 (GetIppServiceContext(logRequestResponse));
    var selected = accountQueryService.Select(a => new { a.Id, a.Name });
    foreach (var account in selected)
    {
        accounts.Add(new ShortAccount { Id = account.Id, Name = account.Name });
    }
    return accounts;
}

现在,这个方法的行为正如预期的那样,但如果我查看请求/响应日志(或使用Fiddler的实际请求和响应(,请求不会改变——它仍然是"从帐户中选择*",响应仍然包括帐户实体中的所有其他属性。

换句话说,有效载荷丝毫没有减少。

我是不是做错了什么?或者我只是误解了这一点?

我如何使用SDK生成一个看起来更像"Select Id,Name from Account"的查询,并只返回该结果集?

相关问题——如果这种查询过滤模式没有减少负载,那么它的目的是什么?你还不如把所有的东西都拿走,只拿走你需要的田地?

提前谢谢。

IPP.NET c#SDK允许查询筛选器,但这不会减少负载吗

没错@Barrick。我们的查询提供程序的实现与标准LINQ并不完全相同。所以,斯蒂芬,这就是问题所在。

如果你只想获得特定的字段,我建议你使用IDSQuery,比如:

QueryService<Account> AccQueryService22 = new QueryService<Account>(context);
var t13 = AccQueryService22.ExecuteIdsQuery("Select Id, Name From Account Where Active in (true, false)");

我将把反馈转发给我们的团队。

谢谢!