我正在尝试将元数据从我的“联系人”对象恢复为轻微,这样我就可以将元数据映射到“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?
答案 0 :(得分: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.
};
}