我已经阅读了 breeze.js 的文档(顺便说一句,很棒的文档),但我对 EntityManager 有疑问。
假设我有以下工厂方法:
var createManager = function () {
return new breeze.EntityManager({
serviceName: serviceName,
metadataStore: store
});
};
然后我定义了 Entitymanager 的两个实例:
em1 = createManager();
em2 = createManager();
如果来电
em1.saveChanges();
em2
是否也保存更改?
em1
和 em2
共享同一个缓存吗?
如果没有,我是否必须制作一个单例 EntityManager?在我的项目中,我在很多地方访问 EntityManager,在它们之间交换实体,所以我不确定要遵循的最佳(或正确)架构是什么。
最佳答案
我相信实体管理器在客户端充当它自己的数据上下文。当您创建 em1 和 em2 时,您正在创建 2 个不同的管理器,因此它们彼此独立保存。如果您想在多个地方引用同一个实体管理器(这是它的优点之一),您可以使用 javascript 模块模式来引用您创建的实例。
我的首选技术是创建一个名为 datacontext 的模块。它拥有实体管理器和我想要周围 Breeze 的任何其他自定义功能。所有其他模块都引用此数据上下文并仅向其请求数据。数据上下文对其余模块隐藏了 Breeze 。这不是唯一的方法,但我喜欢它,因为它遵循良好的分离模式。
希望这对您有所帮助。
关于javascript - breezejs 的 EntityManager 是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13493435/