在我的客户端解决方案中,需要从服务器进行部分刷新。是否可以清除所有已定义的构造函数和所有缓存?
甚至尝试过
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);
答案 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 }));
});