Breeze按需加载元数据或实体类型

时间:2017-09-11 14:45:02

标签: asp.net-mvc breeze breeze-sharp

为了减少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 个答案:

没有答案