Я реализую фильтр, используя предикат бриза. Использование BreezeJs и ASP.NET WebAPI (Breeze Side Server) с Entity FrameworkБыл обнаружен двоичный оператор с несовместимыми типами. Найдены типы операндов edm.string и edm.guid для вида равные
Предикат выглядит следующим образом:
var predicate = breezeProvider.breeze.Predicate.create('serialNumber', '==', $scope.filter.serialNumber);
predicates.push(predicate);
Когда я выполнить запрос. Бриз выдает исключение из следующих сообщений:
Был обнаружен двоичный оператор с несовместимыми типами. Найдены типами операндов edm.string и edm.guid для вида равной
The $ scope.filter.serialNumber является строкой и SERIALNUMBER этого свойства GUID
URL-адрес выглядит следующим образом.
http://localhost:51969/breeze/WarehouseProductTransactions/GetProducts? $ = Фильтр (StatusId пе 3d) и (WarehouseId экв 1d) и (AuthorizedADUserId экв 'bTdbnW8t6Uu4D4KHCoQOhg ==') и (SerialNumber экв guid'1b9d065e-eb48-4f3d-883c-2c841771a3e8') & $ OrderBy = Id $ & сверху = 5 & $ = расширения инвентаризации, AuthorizedADUser & $ inlinecount = AllPages &)
Обратите внимание на фрагмент кода:
(Se rialNumber эк guid'1b9d065e-eb48-4f3d-883c-2c841771a3e8')
Моей стороны сервер выглядит следующим образом:
[EnableBreezeQuery(MaxNodeCount = 200)]
public IQueryable<WarehouseProductTransactionDetail> GetProducts()
{
return _contextProvider.Context.WarehouseProductTransactionDetails;
}
Я пытаюсь понять, как я могу решить эту ситуацию, но нет идея.
Любая помощь приветствуется
Возможно ли, что serialNumber, исходящий от клиента, понимается как строка, а затем код на стороне сервера пытается сравнить с GUID. Я не очень разбираюсь в этих конкретных технологиях, но я думаю, серверу необходимо будет сравнить значение с клиента с идентификатором GUID перед сравнением. Или значение от сервера до строки. – devinallenaz