私はbreezejsが初めてです。サーバーからメタデータを取得せずに、クライアントでエンティティ タイプを定義しようとしています。サーバー エンティティに ID というプロパティがあります。
次のコードを使用して、クライアント側の命名規則をキャメルケースにデフォルト設定しました。
breeze.NamingConvention.camelCase.setAsDefault();
そのため、次のようにエンティティのマッピングを開始しました
store.addEntityType({
shortName: "Photo",
namespace: "MyProj.Models",
dataProperties: {
id: {
dataType: DataType.Guid,
isNullable: false,
isPartOfKey: true
},
title: {
dataType: DataType.String
},
description: {
dataType: DataType.String
},
createdDate: {
dataType: DataType.DateTime
},
}
});
id フィールドが適切な値を取得していないことを除いて、これはすべて正常に機能しました。代わりに、そよ風データ型 ctor によって設定されたデフォルト値が に等しくなりGuid.Empty
ます。
Breezejs デバッグ スクリプトをステップ実行するとId
、ajax リクエストからのデータで呼び出されたプロパティ名が検索されることがわかりました。しかし、プロパティがそのままでは見つからないため、文字列ID
に初期化しempty guid
ます。nameOnServer
のプロパティを設定dataProperty
id
することで、修正できると思いました。
store.addEntityType({
shortName: "Photo",
namespace: "MyProj.Models",
dataProperties: {
id: {
dataType: DataType.Guid,
isNullable: false,
nameOnServer: 'ID',
isPartOfKey: true
},
title: {
dataType: DataType.String
},
description: {
dataType: DataType.String
},
createdDate: {
dataType: DataType.DateTime
},
}
});
しかし、うまくいきませんでした。
breez.debug.js コードをさらに掘り下げると、7154 行目のメソッドで、定義した をupdateClientServerNames
無視しているようです。nameOnServer
ここで何か不足していますか?