是否可以在nhibernate会话中拥有多个连接字符串?

时间:2009-12-28 15:58:58

标签: nhibernate

如果我的应用程序跨越多个数据库,即server1上的用户1-10K,server2上的10-10K(例如),如何修改会话对象以指向正确的数据库?

根据我的理解,如果我在nhibernate的会话中更改连接字符串,它会影响每个人而不是当前的请求是否正确?

2 个答案:

答案 0 :(得分:2)

在NHibernate中,ISessionFactory负责将连接字符串保存到特定数据库并创建ISession个实例。对于多数据库支持,您可以查看仍在进行中的NHibernate Shards

答案 1 :(得分:2)

一次会话中一次只能有一个连接。要有更多会导致分布式甚至是临时的事务语义,NHibernate的基本形式不支持。

如果您正在使用NHibernate,那么您可能正在使用SQL Server,这听起来像链接服务器和视图的完美候选者。您可以拥有一个“主”数据库,其中包含合并来自所有不同数据库的数据的视图。实际上,这是一种非常标准的表分区方法,唯一的区别是您的基表位于不同的数据库中。