2014-04-30 42 views
1

引用以下IPP文檔:IPP .NET c#SDK允許查詢過濾器,但這不會減少有效負載?

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; 
} 

現在這個方法的行爲是如預期的,但如果看看我的請求/響應日誌(或使用招實際的請求和響應)的請求確實沒有改變 - 它仍然是「從賬戶中選擇*」,並且響應仍然包括賬戶實體中的所有其他屬性。

換句話說,有效載荷不會減少一個iota。

我在這裏做錯了什麼?或者我只是不正確地理解這一點?

我該如何使用SDK來生成一個看起來更像「Select Id,Account from Account」的查詢,並且只返回結果集?

相關問題 - 如果這種查詢過濾模式不減少有效載荷,它的目的是什麼?你可能會得到整個shebang,只需要你需要的領域?

在此先感謝。

+1

看起來,這就是他們如何創建LINQ提供者的工作方式,這當然與LINQ to SQL和EF提供者的工作方式不一致。 – barrick

回答

2

沒錯@Barrick。我們的查詢提供程序的實現與標準LINQ不完全相同。所以,斯蒂芬,這是問題。

如果你只是想獲得具體領域,我建議你使用IDSQuery像:

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

我將轉發反饋給我們的團隊。

謝謝!

+0

此問題已得到糾正! –