我的模型中有64位(长)属性。元数据是正确的,breezejs知道它是64位属性。
然而,在查询数据时,ODATA URL在值之后不包含“L”,因此我在服务器上得到一个异常,因为它认为我正在尝试查询int32。
所以我不得不在过滤器的末尾手动添加“L”。
这不应该由breezejs自动完成吗?
修改
在breezejs代码中,有一个fmtInt函数。它去那里虽然dataType是Int64。我想应该有一个fmtLong函数,用于添加'L'。
我更改了以下代码:
DataType.Int64 = DataType.addSymbol({
defaultValue: 0, isNumeric: true, isInteger: true, quoteJsonOData: true,
parse: coerceToInt,
fmtOData: fmtInt,
getNext: getNextNumber
});
要
DataType.Int64 = DataType.addSymbol({
defaultValue: 0, isNumeric: true, isInteger: true, quoteJsonOData: true,
parse: coerceToInt,
fmtOData: makeFloatFmt("L"),
getNext: getNextNumber
});
它有效。这是正确的方法吗?如果是这样,可能有错误修复?
答案 0 :(得分:1)
现在已经解决了Breeze 1.4.8的问题。
答案 1 :(得分:0)
答案 2 :(得分:0)
我遇到了与1.4.8版本相同的问题。以下通过明确提供Breeze DataType解决了该问题。这包括OData属性的“L”。
var data = {
value: number,
dataType: breeze.DataType.Int64
}
query = query.where(new breeze.Predicate('column', '==', data));