1

私は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

ここで何か不足していますか?

4

1 に答える 1