Tôi đang cố gắng làm cho một số mã hoạt động bằng OData. Đoạn mã sau dường như không hoạt động.Sự cố với bộ lọc OData và trường Hướng dẫn
ds là OpenDataServiceProxy.
adapterTypeId là biểu diễn chuỗi của Hướng dẫn.
adapterName là một tên chuỗi
ds.query('/DataAdapters?$filter=DataAdapterType.DataAdapterTypeId eq guid(\'' + adapterTypeId + '\') and Name eq \'' + adapterName + '\'', ifmgr_CreateAdapter_Step1, onGenericFailure, 'Error');
Dòng trên cung cấp cho các lỗi sau:
Biểu hiện của loại 'System.Boolean' dự kiến sẽ ở vị trí 0.
Nếu tôi loại bỏ phần Guid của bộ lọc để nó chỉ sử dụng phần “Tên” nó hoạt động tốt.
Trường bảng DataAdapters “DataAdapterTypeId” là khóa ngoài được gán cho trường “DataAdapterTypes” trường DataAdapterTypeId.
Có ai có thể phát hiện ra những gì tôi đang làm sai?
------------------- EDIT ----------------------
OK, tôi đã thay đổi bộ lọc như hình dưới đây. Tôi không còn gặp lỗi nữa nhưng nhận được nhiều kết quả hơn là một bản ghi khớp với bộ lọc. Bất cứ ai có thể nói lý do tại sao nó không lọc?
ds.query('/DataAdapters?($filter=Name eq \'' + adapterName + '\' and $filter=DataAdapterTypeId eq guid\'' + adapterTypeId + '\')', ifmgr_CreateAdapter_Step1, onGenericFailure, '');
Tôi đã thực hiện các thay đổi bạn đã đề xuất nhưng bây giờ tôi nhận được tất cả các bản ghi lại, không chỉ là bản ghi khớp với bộ lọc. Tôi đã thêm chi tiết vào câu hỏi ban đầu của mình. – Retrocoder
Không đặt parethesis xung quanh các bộ lọc $. –
Nếu hàng năm muốn hai điều kiện sử dụng một cái gì đó như: $ filter = Tên eq 'foo' và Mô tả eq 'bar' –