2011-03-12 117 views
1

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

但让我们说1页调用2个或更多(n)存储库,这意味着有n单独打电话去数据库。使用像延迟加载的实体框架这样的ORM,如果我共享1个数据库上下文,有可能我的查询可以在存储库级别末尾合并为1个调用?

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

+0

请参阅http://stackoverflow.com/questions/4311770/linq2sql-repository-pattern-how-to-query-data-from-two-or-more-tables – Keith 2011-03-12 23:36:29

回答

1

使用实体框架,您的查询将永远不会合并为单个调用。这是当前EF实施的限制。但是,每一个http请求(最佳实践)都有单一的上下文是一种方式。而不是注入查询字符串注入整个上下文。

+0

所以,我会做一个基础知识库,并使上下文静态? – 2011-03-12 23:42:10

+2

不!您需要为每个请求分隔单个上下文实例,并将其传递给所需存储库的所有构造函数。这通常由IoC容器处理。 – 2011-03-12 23:44:57

+0

我为我的IoC使用ninject,这意味着我将不得不在我的web项目中引用实体框架DLL? – 2011-03-12 23:46:01