我需要配置我的Fluent NHibernate / ASP.NET MVC 2应用程序,以便为每个用户使用单个连接/连接字符串。这是因为:
我觉得我必须解释我的理由,以避免一些“不要那样做”的答案。
所以无论如何,我首先使用单个连接字符串以正常,正确的方式设置所有内容。我使用了LLBLGen创建的SessionManager
来创建SessionFactory
。在SessionFactory
期间创建并存储Application_Start()
。我还有一个IHttpModule
,它将NHibernate会话绑定到当前会话上下文。 (我忘记了我从那里得到的网站。)
我现在想要做的是让用户到达登录页面。他们将选择他们的数据库并输入用户名和密码。应用程序将创建一个数据库连接,将其存储在用户的会话中,NHibernate将获取该数据库连接并使用它。
关于这样做的任何提示都会非常有用,但实际上我需要克服最初的障碍:如果我从SessionFactory
配置中删除数据库连接信息,它会抱怨并抛出异常。如果我不从SessionFactory配置中删除数据库连接信息,即使使用OpenSession(IDbConnection)
提供了不同的连接,它似乎也会使用该连接字符串。此外,既然我甚至不希望NHibernate在用户登录之前做任何事情,我觉得我的IHttpModule
可能会导致其中一些问题。
道歉,如果这听起来更像是一个不连贯的咆哮而不是一个问题;我刚刚把头撞到了墙上一段时间了。任何和所有关于最佳实践的建议(除了“使用一个连接字符串,白痴!”)都表示赞赏。
答案 0 :(得分:1)
你见过http://www.codeproject.com/KB/aspnet/NHibernateMultipleDBs.aspx吗?它没有解释如何用Fluent,而是直接NHibernate来做到这一点,但我认为这将是一个很好的起点。