如果我的應用程序跨越多個數據庫,即server1上的用戶1-10K,server2上的用戶數爲10-10K(例如),如何修改會話對象以指向正確的數據庫?是否有可能在一個nhibernate會話中有多個連接字符串?
從我的理解,如果我更改nhibernate的會話中的連接字符串它會影響每個人,而不是當前的請求正確?
如果我的應用程序跨越多個數據庫,即server1上的用戶1-10K,server2上的用戶數爲10-10K(例如),如何修改會話對象以指向正確的數據庫?是否有可能在一個nhibernate會話中有多個連接字符串?
從我的理解,如果我更改nhibernate的會話中的連接字符串它會影響每個人,而不是當前的請求正確?
在NHibernate中,它是ISessionFactory
,它負責將連接字符串保存到特定數據庫並創建ISession
實例。對於多個數據庫支持,您可以查看仍在工作中的NHibernate Shards。
一次只能在一個會話中建立一個連接。有更多的會導致分佈式或甚至臨時事務語義,其基本形式的NHibernate不支持。
如果你使用NHibernate,你可能使用SQL Server,這聽起來像是鏈接服務器和視圖的完美候選人。您可以擁有一個「主」數據庫,其中包含整合來自所有不同數據庫的數據的視圖。實際上,這是表分區的一種非常標準的方法,唯一的區別是您的基表位於不同的數據庫中。
不知道冬眠在這方面是否更成熟? – mrblah 2009-12-28 16:16:23
是的,'Hibernate Shards'是一個更成熟的項目。 – 2009-12-28 16:26:12