Легкая загрузка метаданных или типа объекта по требованию

Чтобы уменьшить размер метаданных, мы планируем создавать метаданные на основе сущностей. Так что метаданные каждой сущности будут загружаться с сервера по требованию.

Ранее метаданные загружались с помощью 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();
        });
 }

Я что-то пропустил по этому поводу? Пожалуйста помоги мне с этим.

0 ответов

Другие вопросы по тегам