Angular 和 Breeze 多个 EntityManagers

Angular and Breeze multiple EntityManagers

我的 angular 应用程序使用 Breeze 并将 breeze 调用封装在数据上下文服务中。如何将此服务与不同的 EntityManagers 一起使用?我在想在这种情况下我需要放弃将数据上下文用作 angular 服务,因为它似乎需要维护状态。

其他人如何处理这个问题?我真的很讨厌无法使用 angular 服务,但我也想通过不同的 EntityManager 重新使用数据上下文。

我对你的要求了解不够,无法给出具体的答案。但我不会那么快放弃 "datacontext" 抽象。

This question appears to be related to your which seems to be the "sandbox" case. I'll pick up the thread there.

有时我需要多个 EntityManagers 当我需要与多个服务对话时,每个服务都有自己的实体模型。当发生这种情况时,我通常为每个服务设置不同的工作流程,在这种情况下,我应该为每个工作流程设置单独的 "datacontexts"。问题 "solved" :-)

有时我需要两个 EntityManagers 来提供相同的服务,因为我是 "sandboxing"。我 "sandbox" 当我需要同一名义实体的两个副本时:

  1. 代表数据库中实体状态的read-only版本
  2. 包含用户未保存更改的可变版本。

我也可以用单独的 "datacontexts" 来实现这个场景

  1. 主要的 read-only 数据上下文处理应用程序的大部分数据访问需求。
  2. 一个 "editing" 数据上下文,比第一个小,专注于 edit/save 工作流。

每个数据上下文都有自己的 EntityManager 实例。每个实例大多以相同的方式配置并且通常具有相同的元数据。

我可能会创建一个 SandboxContextFactory 服务来创建专用数据上下文的新实例。每个这样的 SandboxContext 都有自己的 EntityManager.

我倾向于编写一个 EntityManagerProvider (EMP) 服务来创建 EntityManagers 并将其注入到数据上下文服务中。此 EMP 可以创建和协调一个常用配置的多个实例 "master" EntityManager.

电磁脉冲可能:

  • 在开头创建一个"master"EntityManager
  • 用元数据填充 "master"(通过 fetchMetadata 调用)
  • 使用 app-wide 个参考实体(例如 "lookup" 个实体)填充 "master"。
  • 根据要求创建新的 "sandbox" 经理,也许是。
    • 克隆大师:var childEm = masterEm.createEmptyCopy();
    • 使用来自主控的通用数据(例如,引用实体)填充 child。您可以通过将 exporting the pertinent entities from master and importing 它们放入 child.
    • 来轻松做到这一点

希望这些架构推测能激发适合您的解决方案。如果您需要帮助按照这些思路开发您的应用程序,您可以考虑参与 IdeaBlade's professional services.