2
我需要保留兩個數據庫鏡像,但我不能用SQL Server鏡像來完成。該項目使用NHibernate 2.2作爲ORM。如何在NHibernate中同時提交兩個數據庫?
有沒有什麼辦法可以解決這個問題?例如:任何NHibernate同時保存到多個數據庫的插件/擴展。
我需要保留兩個數據庫鏡像,但我不能用SQL Server鏡像來完成。該項目使用NHibernate 2.2作爲ORM。如何在NHibernate中同時提交兩個數據庫?
有沒有什麼辦法可以解決這個問題?例如:任何NHibernate同時保存到多個數據庫的插件/擴展。
StackOverflow上有多個類似的問題。請參閱this,this和this。
您必須創建兩個SessionFactory
和ISession
實例,每個數據庫一個。此外,您應該使用TransactionScope
並將數據庫操作包裝在其中的多個數據庫中。
下面的代碼是從答案由「Ricardo Peres」對於上述問題之一複製:
using (TransactionScope tx = new TransactionScope())
{
using (ISession session1 = ...)
using (ITransaction tx1 = session.BeginTransaction())
{
...do work with session
tx1.Commit();
}
using (ISession session2 = ...)
using (ITransaction tx2 = session.BeginTransaction())
{
...do work with session
tx2.Commit();
}
tx.Complete();
}
謝謝,但我不知道是否有一些東西不意味着更改代碼在所有的應用程序,一些配置也許。 – mariaoialvarez
我真的不能說(事實上沒有人可以)你將如何把它放在你的代碼中。如果您有任何中間層(如業務邏輯層),則可以在該級別處理此問題,而不是更改整個應用程序。如果您爲兩個數據庫使用單個存儲庫(因爲兩個數據庫共享相同的結構),您可以在存儲庫中控制這個。 –