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