【发布时间】:2014-12-02 23:25:28
【问题描述】:
我正在关注 John Papa 关于 AngularJS/Breeze SPA 应用程序的精彩复数课程(第 1 部分),并根据我的特殊情况制作模组。
我有用于下拉列表的 Products 和 Uoms 的参考数据。我想从微风本地缓存中加载这些,而不是一直访问服务器。我可以从服务器检索它们,但我不知道以后如何从微风中查询它们。
数据作为 id/name 对对象列表在服务器端公开,这些对象不属于 Entity Framework 公开的 metadataStore 的一部分。在调用服务器获取数据之前,我将这些实体类型添加到微风中。
我是这样创建未映射的 EntityTypes 的:
createReferenceEntity('Products');
createReferenceEntity('Uoms');
function createReferenceEntity(entityName) {
// add reference/lookup client-side only entity type
var et = new breeze.EntityType({
shortName: entityName,
namespace: "Model"
});
et.addProperty(new breeze.DataProperty({
name: "id",
dataType: breeze.DataType.Int32,
isNullable: false,
isPartOfKey: true,
}));
et.addProperty(new breeze.DataProperty({
name: "name",
dataType: breeze.DataType.String,
isNullable: false,
}));
metadataStore.addEntityType(et);
}
这是我的 Breeze 控制器中的内容:
[HttpGet]
public object Lookups()
{
// List<ReferenceObject> which is an Id and a Name
var Products = _repository.Products;
var Uoms = _repository.Uoms;
return new { Products, Uoms };
}
所以我从 javascript 调用控制器:
return EntityQuery.from('Lookups').using(manager)
.execute().then(querySucceeded, _queryFailed);
查询成功。我在 FireBug Net 窗口中看到的内容看起来没问题。所以数据是通过网络传输的。
所以我似乎无法做的是再次查询查找数据。它不应该在微风缓存中吗?这就是我正在尝试的。返回为空:
_getReferenceData('Products', 'name');
function _getReferenceData( resource, ordering) {
return EntityQuery.from(resource)
.orderBy(ordering)
.using(manager)
.executeLocally();
}
也许服务器没有以正确的格式通过网络提供序列化对象?我没有正确查询微风?
我真的很感谢这里的任何建议,因为我在试图弄清楚这一点时变得有点睡眼惺忪。
谢谢! 科里。
【问题讨论】:
标签: c# angularjs entity-framework asp.net-web-api breeze