我试图让一些代码使用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