2010-04-06 51 views
1

我最近发布了一个由Bryan Watts回答的关于nHibernate的通用存储库的问题。nHibernate会话 - 在Web,windows,wcf等中使用存储库模式

我试图设计我的数据访问以允许各个方面 - 从ASP.net,WCF和Windows窗体/ Windows服务。 我有点困惑:会话管理等。

我该如何处理?

我已经检查出的代码,如: http://membranecms.googlecode.com/svn/

以及诸如问题: NHibernate Linq Session Management

但是如果我不只是基于做的事情在网络我该怎么办环境..?

我需要为每个客户端创建不同的存储库吗? 或者我是否将ISession传入(例如)UserRepository构造函数中?

...作为一个方面说明我使用nHibernate.Linq也在使用功能NHibernate来配置我的映射

回答

3

我们在通用基础类库使用构造函数依赖注入< ....>。 Repository构造函数需要从IoC容器提供的ISession实例。

IoC容器在启动时初始化,具体取决于正在使用哪个UI。

绝对不需要每个UI前端有不同的存储库。

+0

+1用于DI使用。每个应用程序可能只需要一个内置此类信息的“上下文”。上下文对于每种风格的应用都是不同的,例如,一个侧重于网络和侧重桌面的网络。在上述情况下,基础设施代码(例如存储库)仅获取一个上下文或各个“ISession”实例,它对于每种类型的应用程序的制作方式都不相同。 – 2010-04-06 22:45:48

+0

谢谢你们,你知道我可以看看这种方法的任何例子吗? – Alex 2010-04-06 22:48:15

+0

我*认为* Sh#rp建筑做它http://www.sharparchitecture.net/,但我没有看得太广泛,而不是一会儿,所以把它与一粒盐。 – 2010-04-06 23:11:04