0

メタデータを「contactdto」オブジェクトにマップできるように、「連絡先」オブジェクトからそよ風にメタデータを取得しようとしています。サーバーには、GetContactsMetadata という Web API 関数があります。

    [HttpGet]
    public IQueryable<Contact> GetContactsMetadata()
    {
        return _contextProvider.Context.Contacts.Take(1);
    }

この例を実行したら、IQueryable やリストを削除すると確信しています。クライアントには次のものがあります

        //GetContactsMetadata
        var myJsonResultsAdapter = new breeze.JsonResultsAdapter({
            name: "GetContactsMetadata",
            extractResults: function (json) {
                return json.results;
            },
            visitNode: function (node, parseContext, nodeContext) {
                var entityType = normalizeTypeName(node.$type);
                var propertyName = nodeContext.propertyName;
                var ignore = propertyName && propertyName.substr(0, 1) === "$";

                return {
                    entityType: entityType,
                    nodeId: node.$id,
                    nodeRefId: node.$ref,
                    ignore: ignore
                };
            }
        });
        var dataService = new breeze.DataService({
            serviceName: 'api/contacts',
            jsonResultsAdapter: myJsonResultsAdapter
        });
        var manager = new breeze.EntityManager({ dataService: dataService });

「normalizeTypeNameが定義されていません」というエラーがクロムで発生し続けます。JsonResultsAdapter を正しく呼び出していますか?

4

1 に答える 1

2

私は例でより明確であるべきでした。

normalizeTypeNameメソッドは、開発者が作成するメソッドであり、ノードのプロパティを取り、Breeze EntityType または Breeze EntityType 名を返します。実際にタイプ名を知っていて、このアダプターを単一のタイプのクエリにのみ使用している場合は、次のように簡単に実行できます。

 visitNode: function (node, parseContext, nodeContext) {
     return {
         entityType: "Contact" // or "ContactDTO" depending on what you are calling the type on the client.
     };
 }
于 2013-04-22T22:12:41.733 に答える