トランザクションスコープのみを使用する場合の問題の概要は次のとおりです。
nhibernate(v3.1withoracle方言および11gdbw / opd.net v2.112.1.2)は、フラッシュの問題を回避するために独自のトランザクションを必要としているようですが、トランザクションスコープをnhibernateで機能させることができませんでしたトランザクション。
私はそれを機能させることができないようです:(これはnhibernateまたはodp.netの欠陥である可能性があります、確かではありません...
ここで同じ問題が見つかりました:
修正済み:解決策が見つかりました! 「enlist=dynamic;」を入力します私のオラクル接続文字列に、問題は解決されました。 nhibernateトランザクション(フラッシュの問題を修正するため)とトランザクションスコープの両方を次のように使用することができました:
ISessionFactory sessionFactory = CreateSessionFactory();
using (TransactionScope ts = new TransactionScope())
{
using (ISession session = sessionFactory.OpenSession())
using (ITransaction tx = session.BeginTransaction())
{
//do stuff here
tx.Commit();
}
ts.Complete();
}
ログファイルを確認したところ、次のことがわかりました:2011-06-27 14:03:59,852 [10] DEBUG NHibernate.Impl.AbstractSessionImpl-DTCトランザクションに参加しています:Serializable
接続でSQLが実行される前。ユニットテストを行って、適切に実行されていることを確認します。シリアライズ可能が何を教えてくれるのかよくわかりませんが