Я пытаюсь заставить работать некоторый код с использованием 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, '');