4

我已经阅读了微风.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,在它们之间交换实体,所以我不确定要遵循的最佳(或正确)架构是什么。

4

1 回答 1

7

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

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

希望这可以帮助。

于 2012-11-21T13:20:48.730 回答