2014-12-22 6 views
2

Есть ли способ создать предикат для чтения для свойства, что его тип Edm.Decimal?breeze.Predicate for Decimal Type

потому что тип данных в следующем выражении всегда двойной, и я не нахожу способ сказать, что мне просто нужно создать предикат для десятичного типа, а не двойной тип, потому что в окончательном запросе на URL я получил '10 .53 d 'value вместо '10 .53 m' значение, то сервер ответит мне с ошибкой.

var p = new breeze.Predicate ('UnitPrice', '> =', 10.53);

Заранее спасибо.

ответ

6

Вы всегда можете явно указать тип данных в любом запросе, как это:

var p = new breeze.Predicate('UnitPrice', ">=", 
     { value: 10.53, dataType: breeze.DataType.Decimal }); 

Однако, это не должно быть необходимо, если у вас есть метаданные для EntityType доступных на клиенте. В этом случае EntityQuery будет по умолчанию предполагать, что dataType - это то, что указано в метаданных для каждого свойства.

Единственная причина, по которой он должен принять Double vs Decimal, - это если метаданные EntityType не доступны для указанного свойства.

+0

Огромное спасибо Jay Traband, я потратил много времени на поиск этого отличного ответа, но, видите ли, я сначала попробовал вторую часть, я имею в виду, что я создал предикат, когда метаданные находятся на клиенте, но у меня такая же проблема, есть никоим образом, даже с метаданными в руках, чтобы знать свойство данных UnitPrice 'dataType, потому что, когда я создаю предикат, я не указываю, какой объект entityType имеет это свойство,' Order entityType 'в этом случае. Итак, Джей, что мне здесь не хватает? или я что-то не так? Благодарю. – sergio

+0

Предикат имеет смысл только после того, как он применяется к EntityQuery, который всегда имеет EntityType, и окончательное разрешение URL-адреса не происходит до тех пор. Таким образом, один и тот же предикат может быть разрешен для разных URL-адресов в зависимости от EntityType. Как вы используете предикат без EntityType. –

+0

Это мой путь. var query = new breeze.EntityQuery(); var p = new breeze.Predicate (...); query = query.where (p); query = query.from (имя); entityManager.executeQuery (запрос). then (функция (данные) {defer.resolve (data);}) ;. – sergio