我試圖讓一些代碼使用OData工作。下面的代碼似乎不起作用。OData過濾器和Guid字段的問題
ds是OpenDataServiceProxy。
adapterTypeId是Guid的字符串表示形式。
adapterName是一個字符串名稱
ds.query('/DataAdapters?$filter=DataAdapterType.DataAdapterTypeId eq guid(\'' + adapterTypeId + '\') and Name eq \'' + adapterName + '\'', ifmgr_CreateAdapter_Step1, onGenericFailure, 'Error');
上面一行給出以下錯誤:
在位置0預期如果刪除類型 'System.Boolean' 的
表達過濾器的Guid部分,這樣它只是使用「名稱」部分,它工作正常。
DataAdapters表字段「DataAdapterTypeId」是外鍵的「DataAdapterTypes」表DataAdapterTypeId字段。
任何人都可以發現我做錯了什麼嗎?
-------------------編輯----------------------
好的,我已經更改了過濾器,如下所示。我不再收到錯誤,但獲得大量結果,而不是與篩選器匹配的記錄。任何人都可以說爲什麼它不是過濾?
ds.query('/DataAdapters?($filter=Name eq \'' + adapterName + '\' and $filter=DataAdapterTypeId eq guid\'' + adapterTypeId + '\')', ifmgr_CreateAdapter_Step1, onGenericFailure, '');
我做了您推薦的更改,但現在我獲取所有記錄,而不僅僅是與過濾器匹配的記錄。我已將細節添加到我的原始問題中。 – Retrocoder 2010-10-11 08:19:20
不要在$過濾器周圍放置parethesis。 – 2010-10-11 12:08:09
如果同時需要兩個條件,請使用以下內容: $ filter =名稱eq'foo'和描述eq'bar' – 2010-10-11 12:08:44