breezejs的EntityManager如何工作?

时间:2012-11-21 12:36:09

标签: javascript breeze

我已经阅读了breeze.js的文档(顺便提一下很棒的文档),但我对EntityManager有疑问。

假设我有以下工厂方法:

  var createManager = function () {
        return new breeze.EntityManager({
            serviceName: serviceName,
            metadataStore: store
        });
    };

然后我定义了Entitymanager的两个实例:

em1 = createManager();
em2 = createManager();

如果有电话

em1.saveChanges();

em2是否也会保存更改?

em1em2共享同一个缓存吗?

如果没有,我是否必须制作Singleton EntityManager?在我的项目中,我在许多地方访问EntityManager,在它们之间交换实体,所以我不确定要遵循的最佳(或正确)架构是什么。

1 个答案:

答案 0 :(得分:7)

我相信实体管理器在客户端上充当自己的数据上下文。创建em1和em2时,您将创建2个不同的管理器,因此它们彼此独立地保存。如果你想在多个地方引用同一个实体管理器(这是它的优点之一),你可以使用javascript模块模式来引用你创建的实例。

我首选的技术是创建一个名为datacontext的模块。它拥有实体经理和我想要的任何其他自定义功能。所有其他模块都引用此datacontext并向其询问数据。 datacontext隐藏了其余模块的微风。它不是唯一的方式,但我喜欢它,因为它遵循良好的分离模式。

希望这有帮助。