モデルに 64 ビット (長い) プロパティがあります。メタデータは正しく、breezejs はそれが 64 ビット プロパティであることを認識しています。
それでも、データをクエリするとき、ODATA URL の値の後に「L」が含まれていないため、int32 に対してクエリを実行しようとしていると見なされるため、サーバーで例外が発生します。
そのため、フィルターの最後に「L」を手動で追加する必要がありました。
これはbreezejsによって自動的に行われるべきではありませんか?
編集
Breezejs のコードには fmtInt 関数があります。dataType は Int64 ですが、そこに移動します。「L」を追加するための fmtLong 関数が必要だと思います。
次のコードを変更しました。
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
});
そして、それは機能します。それは正しい方法ですか?もしそうなら、バグ修正はありますか?