BreezeJS - 清除元数据和缓存

时间:2014-02-03 18:33:56

标签: breeze

在我的客户端解决方案中,需要从服务器进行部分刷新。是否可以清除所有已定义的构造函数和所有缓存?

甚至尝试过

 dataService = new breeze.DataService(breezeDataServiceSettings),
        ms = new breeze.MetadataStore();
        manager = new breeze.EntityManager({ dataService: dataService , metadataStore: ms});

每次刷新

我发现我需要清除原型中的entityType

var ctor = ctorFactory.createCtor(allTypes[type].shortName),
                store = manager.metadataStore;

            ctor.prototype.entityType = undefined; 
            store.registerEntityTypeCtor(allTypes[type].shortName, ctor);

2 个答案:

答案 0 :(得分:3)

实际上,new breeze.EntityManager(...) 总是会产生一个空的metadataStore干净的经理。查看网络流量,您将看到新管理器在第一次查询时从服务器请求元数据。

你必须想要避免那种吱吱作响的干净行为......我通常希望避免这种行为。

通常,如果我已经获得了元数据并用它初始化了我的经理,我想创建以相同方式设置的新管理器。你可以:

// manager2 has manager1's settings but not its cache contents
var manager2 = manager1.createEmptyCopy(); 

但我想在你的情况下你想要默认。

答案 1 :(得分:0)

尝试一下:

var controllerName = '...',
    serviceUrl = 'https://..../' + controllerName,
    metadataUrl = serviceUrl + '/Metadata',
    entityManager = new breeze.EntityManager();
$.ajax({ url: metadataUrl, type: 'GET', dataType: 'text' })
    .then(metadataJson => {
        entityManager.metadataStore.importMetadata(metadataJson);
        entityManager.metadataStore.addDataService(new breeze.DataService({ serviceName: serviceUrl }));
    });