0

カスタム タイプを Breeze メタデータストアに追加するために、Breeze のNoDb サンプルに従っています。私の目標は、Web API コントローラー メソッドを呼び出して、そのオブジェクトのクライアント側バージョンを完全にハイドレートできるようにすることです。

Employee オブジェクトを取得して、Employee プロパティ (FirstName、LastName) をマップすることも、含まれている複雑な型をマップすることもできませんでした。これらの複雑な型は、サーバー側の他のカスタム クラスのコレクションで構成される Employee オブジェクトの単なるプロパティです。

たとえば、CompanyId と Name プロパティを含む "CompanyAffiliates" のカスタム タイプがあります。

Breeze に何かを正しくマッピングさせることができないようです。また、エラーからのフィードバックも得られません。誰でも私にいくつかの提案を提供できますか?

関連するコードを次に示します。

addEmployeeType = function() {
                var entityType = new _entityType({
                    shortName: "Employee",
                    namespace: "HSSPortal.Business.Models",
                    autoGeneratedKeyType: _autoGeneratedKeyType.Identity
                });
                entityType.addProperty(new _dataProperty({
                    name: "customerId",
                    dataType: _dataType.String,
                    isNullable: false,
                    isPartOfKey: true
                }));
                entityType.addProperty(new _dataProperty({
                    name: "firstName",
                    dataType: _dataType.String,
                    isNullable: false
                }));

                entityType.addProperty(new _dataProperty({
                    name: "lastName",
                    dataType: _dataType.String,
                    isNullable: false
                }));
 _store.addEntityType(entityType);
4

1 に答える 1

1

私の推測では、サーバーで作成している型には、クライアントに登録した名前と一致する名前がありません。この場合、「HSSPortal.Business.Models」名前空間の「Employee」という名前のサーバー側タイプに一致するクライアント側タイプがあります。

タイプ名が一致するように、クライアント タイプ登録コードまたはサーバー側タイプのいずれかを変更できます。または、JsonResultsAdapter を使用して、シリアル化された型名をサーバーから解釈し、クライアントに登録された型にすることができます。あなたの場合、このアプローチはおそらく必要ありません。

ちょっとした注意: 上記のコードでは、実際には簡単な "ComplexType" をここに登録していません。複合型は AddComplexType メソッドによって作成され、キー プロパティも AutoGeneratedKeyType も持ちません。概念的には、"ComplexTypes" は、親エンティティのコンテキスト以外ではクエリできないプロパティのコレクションを表します。

実際にコードで複雑な型を登録している場合 (上記には示されていません)、同様の命名の問題が発生します。

于 2013-03-28T16:48:31.360 に答える