現在のトランザクション(アンビエント・トランザクション?)は、
Transaction.Currentにて取得できるようです。
以下のコードから分かるように、
TransactionScope内だと not null となります。
https://msdn.microsoft.com/ja-jp/library/system.transactions.transaction.current%28v=vs.110%29.aspx
Console.WriteLine(Transaction.Current != null); using (TransactionScope s = new TransactionScope()) { Console.WriteLine(Transaction.Current != null); } Console.WriteLine(Transaction.Current != null); Console.ReadLine();
TransactionScopeのインスタンス生成時からトランザクションは開始されるので、
その辺を考慮して設計および実装する必要がありそうです。