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 });

它在 chrome 中不断出错:“未定义 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 回答