2013-07-23 7 views
7

データベース内で追跡していないオブジェクトをサーバー上のオブジェクトに追加しています。データはクライアントに返されますが、breezeによってマテリアライズされたオブジェクトにはプロパティとして保持されません。 breezeに返すオブジェクトにプロパティを追加することはできますが、データを格納するデータベースにマップすることはできません。エンティティフレームワークエンティティにマッピングされていないサーバー側のプロパティを含む

例:ウィジェットクラス プロパティA - データベースにマップされています プロパティB - [NotMapped]属性がデータベースに格納されないようにしました。これは、サーバによって即座に計算されます。

我々は我々が取得、クライアント上のオブジェクトを取得します: ウィジェットクラス= { プロパティA:ko.observable(Aのための価値) }

プロパティBが欠落しています。

我々は、我々が見サーバから返されたJSONを見て:

ウィジェット・クラス= { プロパティA:Aのための価値、 プロパティB:B のための価値}

答えて

4

プロパティはEFContextProviderによって生成されたメタデータの一部ではないので、これらのプロパティは、クライアント側の風エンティティで使用することはできません。しかし、jsでは、クライアントサイドのエンティティを拡張し、entityTypeにプロパティを追加することができます(初期値が設定されています)。これにより、jsonオブジェクトがサーバから取得されたときにプロパティの値が正しく設定されるようになります。

http://www.breezejs.com/documentation/extending-entities

+2

arulが正しいです。これは私のために働いた。彼がbreezeチームによって共有された文書を読んでください。エンティティ型コンストラクタでは、サーバのエンティティと同じ名前を使用してデフォルト値でNotMappedプロパティを宣言する必要があります(大文字で始まる場合はそれに従います)。エンティティ "TheEntity"には、 "Not"と呼ばれるNotMapped boolプロパティがあります。次に、javascript:metadataStore.registerEntityTypeCtor( 'TheEntity'、function(){this.Not = ko.observable(false);});それだけで、サーバーとは異なる値が指定されていない限り、ctorで指定された値が使用されます。 – kzfabi

+0

これはとても不便です!エンティティにNotMapped書き込み可能なサーバープロパティを追加する機能が必要です。 – blazkovicz

0

これは何かのように聞こえますWard Bellが言及したように、プロパティにはnull値があり、デフォルトでBreezeはそれを返しません。

ここで説明したカスタムbreeze設定クラスを追加して、null値がJsonで返される方法を調整してください。このクラスをWeb APIプロジェクトに追加するだけで、Breezeはそれを自動的に探して設定します。 NotMapped属性を持つ

http://www.breezejs.com/documentation/web-api-controller

+0

いいえヌル値ではありません。クライアントからサーバーに返されたjsonデータのプロパティを見ることができます。エンティティ型定義に含まれていないクライアントに返されるプロパティにアクセスする方法はありますか? – StewartArmbrecht

関連する問題