javascript - Breeze.js 如何在 2 个实体管理器之间共享元数据

标签 javascript entity metadata breeze entitymanager

我有 2 个实体经理:

var mgr1 = new breeze.EntityManager('api/app');
var mgr2 = new breeze.EntityManager('api/app');

现在,我正在分别获取每个元数据,尽管元数据完全相同。我显式调用 fetch 方法来控制加载元数据的时间。

mgr1.fetchMetadata();
mgr2.fetchMetadata();

我读到可以在两个管理器之间共享元数据,但我还没有找到示例。根据我所读到的内容,我认为我可以在第二个管理器的构造函数中指定引用第一个管理器的元数据的元数据,但不确定它会是什么样子。所以我的代码看起来像这样:

var mgr1 = new breeze.EntityManager('api/app');
mgr1.fetchMetadata();
var mgr2 = new breeze.EntityManager({ serviceName: 'api/app', metadata: WHAT_GOES_HERE});

我知道我还必须将其与 promise 进行排序,以便在第一个管理器加载其元数据之前不会构建第二个管理器。

我走的路正确吗?我的目标是消除为第二个管理器加载元数据所需的额外带宽。谢谢

最佳答案

您实际上不必获取元数据来共享相同的 MetadataStore。以下两条语句是一个非常简洁的方法:

var em1 = new breeze.EntityManager('api/app'); 
var em2 = em1.createEmptyCopy();

我并不是想表现得聪明。我的观点是,MetadataStore 是元数据的容器,在 EntityManager 创建后立即可用,并且在保存任何元数据之前就已明确定义无论如何。

createEmptyCopy() 方法“克隆”管理器,而不复制其实体缓存内容。复制的属性包括管理器的 MetadataStore 及其 DataService

由于管理器共享相同的 MetadataStore,因此使用任一管理器获取元数据都可以解决问题。

查看 EntityManager 的 Breeze API 文档和 MetadataStore .

关于javascript - Breeze.js 如何在 2 个实体管理器之间共享元数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23527845/

相关文章:

java - Spring Boot get请求未使用@OneToMany获取第三级对象

c# - MEF GetExports<T, TMetaDataView> 不返回任何内容,AllowMultiple = True

java - Java 中的元数据如何帮助防止段错误?

javascript - Bootstrap : why is my Modal transparent?

xml - 实体声明可以嵌套在引用的 XML 文件中吗?

php - 如何获取今天的当前时间经过百分比?

java - JPA:具有复合主键和单键的实体映射

java - 无论如何要将元数据添加到 Java 集合中?

javascript - 从数字计数到目标数字脚本并在多个框中使用它

javascript - Bootstrap 无法编译 css SyntaxError : Cannot read property 'toCSS'