我目前正在研究与这些技术相关的概念证明。
除了首先使用 EF 代码之外,我基本上已经实现了本文中的建议。
使用 Breeze 使用 ASP.NET Web API OData 服务
一个例外,即
“未捕获的类型错误:无法读取未定义的属性‘propertyRef’”
执行这段客户端代码时抛出:
<script type="text/javascript">
var my = {}; //my namespace
$(function () {
debugger;
var serverAddress = "/odata/";
breeze.config.initializeAdapterInstances({ dataService: "OData" });
var manager = new breeze.EntityManager(serverAddress);
my.vm = {
entities: ko.observableArray([]),
load: function () {
var query = breeze.EntityQuery.from("Customers");
manager.executeQuery(query, function (data) {
var results = data.results;
$.each(data.results, function (i, c) {
my.vm.entities.push(c);
});
})
.fail(function (e) {
alert(e);
}); ;
}
}
my.vm.load();
ko.applyBindings(my.vm);
});
</script>
源于此在微风.debug.js
function convertFromODataEntityType(odataEntityType, schema, metadataStore) {
var shortName = odataEntityType.name;
var ns = getNamespaceFor(shortName, schema);
var entityType = new EntityType({
shortName: shortName,
namespace: ns
});
---> **EXCEPTION HERE**--->var keyNamesOnServer = toArray(odataEntityType.key.propertyRef).map(__pluck("name"));
toArray(odataEntityType.property).forEach(function (prop) {
convertFromODataDataProperty(entityType, prop, schema, keyNamesOnServer);
});
toArray(odataEntityType.navigationProperty).forEach(function (prop) {
convertFromODataNavProperty(entityType, prop, schema);
});
metadataStore.addEntityType(entityType);
return entityType;
}
通过 url 查询 odata 服务会返回我想要的结果,因此它似乎不是数据检索问题。
我已经进行了一些搜索,原因被认为是微风尚未处理继承的类型。
在我的例子中,我没有使用继承类型。
欢迎任何建议。