javascript - breezejs 的 EntityManager 是如何工作的?

标签 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 共享同一个缓存吗?

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

最佳答案

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

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

希望这对您有所帮助。

关于javascript - breezejs 的 EntityManager 是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13493435/

相关文章:

javascript - 从 BreezeJs 实体确定关系类型

javascript - 在 javascript 中解析类似 json 的结构/字符串

javascript - 如何从外部网页导航回使用 pushState 创建的伪 url?

Javascript Regexp 替换与另一个对象文字的属性名称匹配的多个字符串

javascript - 如何从异步函数 BreezeJS 关闭模式

cors - Breeze js : configuring service for CORS

javascript - 如何选择注入(inject)的 HTML 的 li 并使其隐藏

javascript - 使用nodejs和phantomjs进行动态抓取

breeze - BreezeJS 是否应该使用 Durandal 在单页应用程序中跨页面共享实体管理器?

javascript - Durandal : Widget's activate callback not behaving like a regular viewmodel's callback