我目前正在研究有關這些技術的概念證明。Breeze.js與asp.net web api odata和代碼優先
我已經基本實現了本文中建議的內容,首先使用EF代碼除外。
Consuming an ASP.NET Web API OData Service with Breeze
例外即
「遺漏的類型錯誤:無法讀取的未定義的屬性 '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>
來源於此breeze.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服務會返回我想要的結果,所以它似乎不是數據檢索問題。
我已經做了一些搜索,並提出了原因,因爲微風尚未處理繼承類型。
在我的情況下,我沒有使用繼承類型。
歡迎任何建議。