Легкая загрузка метаданных или типа объекта по требованию
Чтобы уменьшить размер метаданных, мы планируем создавать метаданные на основе сущностей. Так что метаданные каждой сущности будут загружаться с сервера по требованию.
Ранее метаданные загружались с помощью breeze(нормальное поведение), и они отлично работают для нас. Чтобы добиться загрузки метаданных по требованию, я попробовал функцию "importMetadata". Но "entityManager.HasChanges()" всегда возвращает "false", но пользовательские входные данные находятся в сущности json.
Я использовал приведенный ниже фрагмент кода, чтобы сделать то же самое.
constructor(private bwhttp: BWHttp) {
this.em = new EntityManager(this.serviceName);
this.em.dataService.hasServerMetadata = false;
this.em.saveOptions = new SaveOptions({ allowConcurrentSaves: true });
}
public getData(data: string, formType?, args?, system?, taxtype?) {
this.bwhttp.get("http://someserver.cdn.com/metadata/"+formType+".json").subscribe(httpdata => {
var metadata = JSON.stringify(httpdata['_body']);
this.em.metadataStore.importMetadata(metadata, true);
this.getDataInternal(data, formType, args, system, taxtype);
});
}
public saveChanges(propertyName: string) {
this.applyPropertyChanges(propertyName);
if (!this.em.hasChanges()) return;//it always gives false.
this.em
.saveChanges()
.then(result => {
this.status = "Changes Saved."
this.hassaved.next(true);
})
.catch(err => {
this.status = "Error:" + err.toString();
this.em.rejectChanges();
});
}
Я что-то пропустил по этому поводу? Пожалуйста помоги мне с этим.