ConnectionUtils
とそのGetConnectionTxPair
メソッドを使用することをお勧めします。 データベース接続とトランザクションのペアを返します。トランザクションへの参照がある場合、このコンテキストにTransaction
プロパティを設定するだけで、LINQ2SQL DataContext
を明示的にこのトランザクションに登録できます。
あなたはLINQ2SQLをサポートするためにAdoTemplate
を拡張することができます
public delegate T DataContextDelegate<T>(DataContext command);
public class LinqAdoTemplate : AdoTemplate
{
public virtual T Execute<T>(DataContextDelegate<T> del)
{
ConnectionTxPair connTxPair = ConnectionUtils.GetConnectionTxPair(DbProvider);
using (var context = new DataContext(connTxPair.Connection))
{
//downcast is a bit smelly here
//one can throw exception though when connTxPair.Transaction is of invalid type
context.Transaction = connTxPair.Transaction as DbTransaction;
return del(context);
}
}
}
次に、あなたのAdoTemplateアウェアオブジェクトにこれを注入するSpring.NETを設定することができます。
素敵な答え、私はこの件についてもあなたの[ブログ投稿](http://mkarczewski.wordpress.com/2012/09/13/spring-net-linq-to-sql-transactions-support/)を読んでいるのが好きでした。 – Marijn