【问题标题】:IPP .NET c# SDK allows query filters, but this does not reduce payload?IPP .NET c# SDK 允许查询过滤器,但这不会减少有效负载?
【发布时间】:2014-04-30 00:31:23
【问题描述】:

参考以下 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 的实际请求和响应),请求不会改变 - 它仍然是“从帐户中选择 *” ,并且响应仍然包含 Account 实体中的所有其他属性。

换句话说,有效载荷不会减少一分。

我在这里做错了吗?还是我理解错了?

如何使用 SDK 生成一个看起来更像“从帐户中选择 ID,名称”的查询,并且只返回该结果集?

相关问题——如果这种查询过滤模式不减少负载,它的目的是什么?您还不如得到整个shebang,然后只占用您需要的字段?

提前致谢。

【问题讨论】:

  • 看起来这就是他们创建 LINQ 提供程序的工作方式,这肯定与 LINQ to SQL 和 EF 提供程序的工作方式不一致。

标签: c# linq sdk intuit-partner-platform quickbooks-online


【解决方案1】:

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

如果您只想获取特定字段,我建议您使用 IDSQuery,例如:

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

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

谢谢!

【讨论】:

  • 此问题已修复!
猜你喜欢
  • 1970-01-01
  • 2021-09-10
  • 2017-01-17
  • 1970-01-01
  • 1970-01-01
  • 2014-06-05
  • 2015-05-26
  • 2020-11-06
  • 1970-01-01
相关资源
最近更新 更多