2009-08-26 61 views
1

我使用S#arp架構(使用NHibernate)。我有一些實體映射到一個數據庫中的表,其他實體映射到不同的數據庫。披露:數據庫已經存在,所以我不能先做模型。S#arp架構/擁有多個數據庫的NHibernate

如何配置此功能?

編輯:將Fluent NHibernate的SchemaIs方法作爲將實體映射到不同數據庫中的表的推薦方法?我相信通過NHib的xmp映射文件也是可能的。

回答

2

我這樣做的方式是使用多個nhibernate配置文件在global.asax.cs中的InitializeNHibernateSession中初始化多個NHibernateSession。然後我在控制器中針對每個適當的操作方法使用了[Transaction(「nhibernate.dbname」)](dbname是分配給WebSessionStorages的名稱)。

+0

難道您發佈InitializeNHibernateSession方法的樣本嗎?謝謝。 – LordHits 2009-10-28 16:11:54

+0

這裏你去... public override void Init() { base.Init(); webSessionStorage1 =新的WebSessionStorage(this,「nhibernate.db1」); webSessionStorage2 = new WebSessionStorage(this,「nhibernate.db2」); } ... 私人無效InitializeNHibernateSession(){ NHibernateSession.Init( webSessionStorage1, 新的String [] {使用Server.Mappath( 「〜/斌/ MyProject.Data.dll」)}, 服務器.MapPath( 「〜/ NHibernateDB1.config」)); NHibernateSession.Init( webSessionStorage2, 新的字符串[] {使用Server.Mappath( 「〜/ bin中/ MyProject.Data.dll」)}, 使用Server.Mappath( 「〜/ NHibernateDB2.config」)); } – Richard 2009-10-28 16:49:38

+1

如果一個控制器操作對兩個數據庫都起作用會怎麼樣? – Amitabh 2010-04-05 17:36:54