2011-03-16 77 views
1

類似的quetion已經在這裏問:數據業務操作失敗

ADO.Net Services service operation with parameters called from client library fails

的問題的整個描述,因爲我現在有火焰。唯一不同的是我以正確的方式傳遞所有參數。

我在數據服務中定義此opertaion方法:

[WebGet] 
    public IQueryable<Equipment> GetCompanyEquips(int id) 
    { 
     return this.CurrentDataSource.GetCompanyEquips(id); 
    } 

我可以從它那裏得到的結果,而不在我的web瀏覽器的任何問題:

http://localhost:51685/ITSServiceOData.svc/GetCompanyEquips?id=18

但是當我」 mtrying在我的客戶端得到如下結果:

var r = this.CreateQuery<Equipment>("GetCompanyEquips"); 

      r.AddQueryOption("id", CompanyId); 

      r.ToArray(); 

我有以下異常:

「在處理這個要求時發生錯誤。」

另外我在調試器中看到了什麼r.Query =「{http://localhost:51685/ITSServiceOData.svc/GetCompanyEquips}」,我懷疑這裏有什麼錯,因爲我在這裏沒有看到?id = 18。

此外,當我調用的方法是這樣的:

this.Execute(「http://localhost:51685/ITSServiceOData.svc/GetCompanyEquips?id=18」) - 返回包含空枚舉(儘管在這種情況下例外不提高),但是當我調用相同的查詢字符串瀏覽器,它展示預期結果。

而且當調用其中沒有任何PARAMS類似的方式方法 - 所有做工精細。請幫忙!我花了整整一天的時間來解決這個問題,但是沒有發現我的代碼沒有問題!

謝謝。

回答

2

的AddQueryOption方法返回的IQueryable的新實例。所以,你需要修改做你的代碼:其他

r = r.AddQueryOption("id", CompanyId); 

一兩件事:客戶端庫不支持服務操作返回原始的或複雜類型的枚舉閱讀響應。所以爲了這個工作,設備類型必須是實體類型。

+0

謝謝它的工作。仍然是這裏的工作通過這樣的操作返回不是實體複雜類型,或者這裏的唯一方法是創建另一個數據服務? – baio 2011-03-17 09:29:46

+0

我不明白第二個問題。客戶端庫根本不支持從服務操作返回原始的或複雜的類型解析響應(或那些枚舉)。 「解決辦法」是無論是從服務操作返回的實體類型(有時是可能的,有時它是比較硬),或解析響應等自己(XML格式是很容易處理)。 – 2011-03-17 09:49:17