【问题标题】:Database context in a singleton for repository pattern存储库模式的单例中的数据库上下文
【发布时间】:2011-03-13 07:35:49
【问题描述】:

我目前设计系统的方式是每个存储库都有自己的数据库上下文。我依赖注入每个存储库的连接字符串。

但是假设 1 个页面调用 2 个或更多 (n) 存储库,这意味着有 n 单独调用进入数据库。使用带有延迟加载的实体框架之类的 ORM,如果我共享 1 个数据库上下文,我的查询是否可以在存储库级别的末尾合并为 1 个调用?

我该如何做到这一点?有人可以给我一个关于如何为所有存储库使用 1 个单一上下文的基本大纲/结构吗?谢谢。

【问题讨论】:

标签: asp.net-mvc design-patterns repository-pattern


【解决方案1】:

使用实体框架,您的查询将永远不会合并到单个调用中。这是当前 EF 实现的限制。但是每个 http reqeuest(最佳实践)都有一个上下文是可行的。而不是注入查询字符串注入整个上下文。

【讨论】:

  • 所以我会创建一个基础存储库并将上下文设为静态?
  • 不!您需要为每个请求创建单个上下文实例并将其传递给所需存储库的所有构造函数。这通常由 IoC 容器处理。
  • 我正在为我的 IoC 使用 ninject,这意味着我必须在我的 Web 项目中引用实体框架 dll?
  • 仅当您使用 fluent api 配置容器时。为了避免将 ef 特性直接暴露给 ui,人们使用称为工作单元的第二种模式。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-07-11
  • 1970-01-01
  • 1970-01-01
  • 2011-10-16
  • 1970-01-01
  • 2021-04-28
  • 1970-01-01
相关资源
最近更新 更多