您不能使用manager.metadataSote.getEntityType(「Employees」),直到從服務器檢索到元數據爲止。默認情況下,這發生在第一次查詢操作期間,但是您的代碼在獲取元數據之前嘗試使用元數據。
此外,我認爲您將資源「Employees」的名稱與資源返回的實例的類型(可能是「Employee」)混淆。我還會檢查你的密鑰的數據類型是數字還是字符串。下面的例子假定它的數字(不像你的例子,其中鍵的數據類型可能是一個字符串,因爲你引用了它)。
所以,你有兩種方法,要麼強制元以獲取您撰寫之前,你的查詢,例如:
manager = new breeze.EntityManager(serviceName);
manager.fetchMetadata().then(function() {
var empType = manager.metadataStore.getEntityType("Employee");
var entityKey = new EntityKey(empType, 1);
var query = EntityQuery.fromEntityKey(entityKey);
// if you want to also see the queries details
query = query.expand("Details");
return manager.executeQuery(query);
}).then(function (data) {
var results = data.results;
ok(results.length === 1, "should have returned a single record");
var emp = results[0];
));
或者,如果你知道「關鍵」的字符串名稱(「ID」中下面的例子)字段,直接使用它
manager = new breeze.EntityManager(serviceName);
var query = EntityQuery.from("Employees")
.where("Id", "==", 1)
.expand("Details");
manager.executeQuery(query).then(function(data) {
var results = data.results;
var emp = results[0];
});
你在哪裏定義你的元數據? –