1

在我的应用程序计划中,有一个中央缓存模块。在这个模块中有我所说的上下文,大约有 20 个。每个 Context 都管理自己的一组我称之为 Inject 的对象(可能是 Breeze 所称的 Entities),这些对象保存应用程序中特定函数使用的值。每个上下文就像包装缓存模块内的自己的较小数据库。

我的主要问题是 Breeze 教程讨论了包装自己的 EntityManager 的 DataContext,它似乎与我的 Context 相似,但除了简短提及之外,我无法提供更多信息。DataContext 是 Breeze API 中的一个概念还是一个实际对象?

4

2 回答 2

2

Jay 正在谈论 .NET 中的服务器端。也许您在谈论客户端 JavaScript?如果是这样,请继续阅读;如果不是......坚持杰的回答。

在我们的客户端 JavaScript 应用程序中,我们经常编写一个模块,将 ViewModel 与 Breeze 隔离开来EntityManager。在一个示例中,这样的模块可能称为“dataservice.js”;它可以在另一个示例中称为“datacontext.js”。概念是相同的:您尝试封装数据访问细节(其中涉及 BreezeJS 组件,例如EntityManager),以便 ViewModel 使用更简单、更有意的接口。

这些 JS 模块不是 Breeze 的一部分。它们只是构建应用程序的推荐方法。

您可以根据需要编写尽可能多的这些“数据上下文”。每个都可以有自己的EntityManager实例,该实例缓存自己的一组实体,如果您愿意,您可以将该缓存视为“较小的 [内存] 数据库”。这种针对不同工作流程的“上下文化”在商业应用程序中非常常见。例如,您会看到我们谈论“沙盒编辑器”;每个沙箱都是它自己的“上下文”。

您经常需要将实体从一个“上下文”复制到另一个(而不是往返于服务器)。EntityManager.exportEntities使用andEntityManager.importEntities方法很容易做到这一点。您可以在DocCode 示例中找到示例

于 2013-02-08T04:01:32.113 回答
0

Breeze 目前提供了两种包装“概念”上下文的服务器端实现。EFContextProvider用于包装 EF DbContext 或 ObjectContext,以及用于包装任何对象集合的基本ContextProvider 。在微风示例 zip 中有一个名为“NoDb”的示例,它显示了如何使用 ContextProvider 来简单地包装可查询对象的集合。这两个类在 Breeze 下载页面上的任何 zip 中的 Breeze.WebApi 项目中都可用。

同样,NoDb 示例和相关文档应该使这个概念更加清晰。

于 2013-02-06T20:43:18.687 回答