[seasar-dotnet:1114] [Quill]インターフェースに[Transaction]属性を指定しても有効にならない

Ryo Miyagi [E-MAIL ADDRESS DELETED]
2008年 11月 1日 (土) 03:06:13 JST


コミッタの宮城です。

QuillとS2Daoを使用してDBにデータをINSERTするプログラムを作成したところ
インターフェースに[Transaction]属性を指定しても
トランザクションが開始されない現象が発生しております。
詳細は、次になります。
・ログに「トランザクションを開始しました」のメッセージが表示されない。
・[Transaction]属性が適用されている筈のメソッドの途中で例外を発生させても
DBにInsertしたデータがロールバックされない。

クラスに[Transaction]属性を指定した場合、
トランザクションは開始されます。
・ログに「トランザクションを開始しました」のメッセージが表示される。
・ログに「トランザクションをコミットしました」のメッセージが表示される。
・[Transaction]属性が適用されている筈のメソッドの途中で例外を発生すると
DBにInsertしたデータがロールバックされる。

ドキュメントには、
>Transaction属性はクラス、インターフェース、メソッドに対して付けることができます。
とあるので、トランザクションが有効になると思ったのですが、
何か設定が足りないのでしょうか。

原因を追い切れていないのですが、
VisualStudio2008で作成した再現ソースの一式を添付いたしますので、
確認していただけないでしょうか。

なお、ファイルサイズ軽減のためQuil関連のDLLを削除しているので
お手数ですが、「lib」ディレクトリ下に次のQuil関連のDLL一式のコピーをお願いいたします。
(Castle.DynamicProxy.dll, log4net.dll, Seasar.Dao.dll, Seasar.dll,
Seasar.DynamicProxy.dll, Seasar.Quill.dll)

また、DBは、
S2Container.NETのテスト用のDBをそのまま使用しています。
動かない場合、App.configのDB接続文字列の修正をお願いいたします。


検証環境は、次になります。
・OS:Windows Server 2003 SP2
・言語:C# (.NET Framework 3.5SP1)
・開発環境:VisualStudio 2008 SP1
・DB:SQL Server 2008
・S2Container.NET 1.3.12


以上、よろしくお願いいたします。

--
Ryo Miyagi
-------------- next part --------------
A non-text attachment was scrubbed...
Name: QuilInterfaceTest.zip
Type: application/zip
Size: 22954 bytes
Desc: 無し
URL: <http://ml.seasar.org/archives/seasar-dotnet/attachments/20081101/a7c7586f/attachment-0001.zip>


seasar-dotnet メーリングリストの案内