Проблемы с фильтром OData и полем Guid - PullRequest
9 голосов
/ 08 октября 2010

Я пытаюсь заставить работать некоторый код с использованием OData.Следующий фрагмент кода не работает.

ds - это OpenDataServiceProxy.

adapterTypeId - это строковое представление Guid.

имя_адаптера - это имя строки

ds.query('/DataAdapters?$filter=DataAdapterType.DataAdapterTypeId eq guid(\'' + adapterTypeId + '\') and Name eq \'' + adapterName + '\'', ifmgr_CreateAdapter_Step1, onGenericFailure, 'Error');

В приведенной выше строке выдается следующая ошибка:

Выражение типа 'System.Boolean', ожидаемое в позиции0.

Если я удаляю раздел Guid фильтра, чтобы он просто использовал часть «Name», он работал нормально.

Поле таблицы DataAdapter «DataAdapterTypeId» имеет внешний ключ к полю DataAdapterTypeId таблицы «DataAdapterTypes».

Может кто-нибудь определить, что я делаю неправильно?

------------------- РЕДАКТИРОВАТЬ ----------------------

ОК, яизменил фильтр как показано ниже.Я больше не получаю ошибку, но получаю много результатов назад, а не одну запись, которая соответствует фильтру.Кто-нибудь может сказать, почему он не фильтрует?

ds.query('/DataAdapters?($filter=Name eq \'' + adapterName + '\' and $filter=DataAdapterTypeId eq guid\'' + adapterTypeId + '\')', ifmgr_CreateAdapter_Step1, onGenericFailure, '');

Ответы [ 3 ]

16 голосов
/ 09 октября 2010

Значение guid должно быть отформатировано как guid '' - подробности см. Здесь: http://www.odata.org/developers/protocols/overview#AbstractTypeSystem Не знаю, чего вы хотели достичь с помощью DataAdapterType.DataAdatperTypeId, но символ точки не имеет специального значения ввыражение фильтра, так что он, вероятно, не делает то, что вы хотели.Если ваш набор сущностей DataAdapters имеет сущности типа DataAdapterType, который затем имеет свойство DataAdapterTypeId, имеющее тип GUID, то вы можете отфильтровать его, просто

DataAdapterTypeId eq guid'<value>'
1 голос
/ 25 сентября 2016

С OData v4 у меня на ASP.NET работает

'DataAdapterTypeId eq' + adapterTypeId

Не обращайте внимания на кавычки или броски вокруг значения guid. Будет выдано сообщение об ошибке, если adapterTypeId не GUID.

0 голосов
/ 04 марта 2015

Вы можете найти обновленную ссылку на URL-адрес здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...