2009-08-07 11 views
3

以下のコードを使用すると、ts.Complete()が呼び出されずに更新が行われるように見えるため、データベースに更新が反映されません。しかし、SharedDbConnectionScopeを省略すると、予想される動作が見えます。 SharedDbConnectionScopeに問題はありますか? Btw私はSubsonicを使用しています。2.2Subsonic:SharedDbConnectionScopeとTransactionScopeを併用すると、破損しているように見える

using (SharedDbConnectionScope sharedConnectionScope = new SharedDbConnectionScope())   
{ 
    using (TransactionScope ts = new TransactionScope()) 
    {     
     // update here 
    } 
} 

答えて

3

問題が見つかりました。 Subsonicのドキュメントは間違っているようです。私がSharedDbConnectionScope上でTransactionScopeをラップすると、正常に動作します。正しい方法は次のようになります。

using (TransactionScope ts = new TransactionScope()) 
{ 
    using (SharedDbConnectionScope sharedConnectionScope = new SharedDbConnectionScope())   
    { 
      // update here 
    } 
} 

編集:嵐で述べたように、SharedDbConnectionScopeはサブソニック2.2で動作するようには思えません。したがって、唯一の解決策はMsDtsをインストールすることであり、SharedDbConnectionScopeは使用しないように思われます。

0

私はSharedDbConnectionScopeがSubsonic 2.2ではまったく動作しないと思います。 私がオブジェクトで見ることができる限りでは、あなたがそれを使うときにMsDtsをサーバにインストールする必要はありません。私はこれをまったく動作させることができませんでした! MsDtsをインストールすると、SharedDbConnectionScopeは必要なくなります。そのため、TransactionScopeの後にコードが作成されたときにコードが機能する理由があります。

+0

です。それはなぜ変化がそれを働かせるか説明するでしょう – owcs

関連する問題