2014-01-24 15 views
1

我以爲Breeze會自動緩存,但在我的簡單測試中,它不起作用。還需要其他什麼設置才能做到這一點?緩存工作需要什麼微風設置?

var dataService = new breeze.DataService({ 
    serviceName: 'api', 
    hasServerMetadata: false 
}); 

var manager = new breeze.EntityManager({ dataService: dataService }); 
var metadataStore = manager.metadataStore; 

console.log('before fetch', manager.getEntities());// returns [] as expected 

var query = breeze.EntityQuery.from("ContentTypes"); 
manager.executeQuery(query).then(function(data) { 
    console.log(data.results.length); // 3 
    console.log('after fetch', manager.getEntities()); // still []. why??? 
}); 

回答

2

文檔中進一步看完後我看到,如果沒有有關的元數據對象,Breeze will do no caching

他們將簡單的JavaScript對象,而不是實體。 Breeze不會緩存它們,跟蹤它們的變化,驗證它們等.Breeze只是作爲一種HTTP檢索機制而行動,而不是更多。

下面是我的示例代碼更新的(工作)版本:

var dataService = new breeze.DataService({ 
    serviceName: 'api', 
    hasServerMetadata: false 
}); 

var manager = new breeze.EntityManager({ dataService: dataService }); 
manager.metadataStore.addEntityType({ 
    shortName: "ContentType", 
    namespace: "MyCompany.MyProduct.Models", 
    autoGeneratedKeyType: breeze.AutoGeneratedKeyType.None, 
    dataProperties: { 
     Name: { dataType: breeze.DataType.String, maxLength: 30, isNullable: false, isPartOfKey: true }, 
     Description: { dataType: breeze.DataType.String, maxLength: 60, isNullable: false } 
    } 
}); 

// 
// these lines are the same as before, but now they work because of the metadata 
// 
console.log('before fetch', manager.getEntities()); // returns [] as expected 

var query = breeze.EntityQuery.from("ContentTypes"); 
manager.executeQuery(query).then(function(data) { 
    console.log(data.results.length); // 3 
    manager.addEntity(data.results[0]); 
    console.log('after fetch', manager.getEntities()); // now it returns 3 entities 
}); 
+0

YES!謝謝!這是一個很大的幫助:) – sksallaj