【发布时间】:2014-04-30 00:31:23
【问题描述】:
参考以下 IPP 文档:
我假设以下使用 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