<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -208,11 +208,13 @@ namespace SubSonic.Repository
         {
             if (_options.Contains(SimpleRepositoryOptions.RunMigrations))
                 Migrate&lt;T&gt;();
-
-            BatchQuery batch = new BatchQuery(_provider);
+            var transactionBatch = TransactionScope.GetCurrentBatchQuery();
+            BatchQuery batch = transactionBatch ?? new BatchQuery(_provider);
             foreach(var item in items)
                 batch.QueueForTransaction(item.ToInsertQuery(_provider));
-            batch.ExecuteTransaction();
+            // Only execute if we spawned a new transaction
+            if (transactionBatch == null)
+                batch.ExecuteTransaction();
         }
 
         /// &lt;summary&gt;
@@ -238,14 +240,17 @@ namespace SubSonic.Repository
         {
             if (_options.Contains(SimpleRepositoryOptions.RunMigrations))
                 Migrate&lt;T&gt;();
-            BatchQuery batch = new BatchQuery(_provider);
+            var transactionBatch = TransactionScope.GetCurrentBatchQuery();
+            BatchQuery batch = transactionBatch ?? new BatchQuery(_provider);
             int result = 0;
             foreach(var item in items)
             {
                 batch.QueueForTransaction(item.ToUpdateQuery(_provider));
                 result++;
             }
-            batch.ExecuteTransaction();
+            // Only execute if we spawned a new transaction
+            if (transactionBatch == null)
+                batch.ExecuteTransaction();
             return result;
         }
 
@@ -286,14 +291,17 @@ namespace SubSonic.Repository
         /// &lt;returns&gt;&lt;/returns&gt;
         public int DeleteMany&lt;T&gt;(IEnumerable&lt;T&gt; items) where T : class, new()
         {
-            BatchQuery batch = new BatchQuery(_provider);
+            var transactionBatch = TransactionScope.GetCurrentBatchQuery();
+            BatchQuery batch = transactionBatch ?? new BatchQuery(_provider);
             int result = 0;
             foreach(var item in items)
             {
                 batch.QueueForTransaction(item.ToDeleteQuery(_provider));
                 result++;
             }
-            batch.ExecuteTransaction();
+            // Only execute if we spawned a new transaction
+            if (transactionBatch == null)
+                batch.ExecuteTransaction();
             return result;
         }
 </diff>
      <filename>SubSonic.Core/Repository/SimpleRepository.cs</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>ef42c32c909e0a2b0980d0d112ceca9ddaf32e42</id>
    </parent>
  </parents>
  <author>
    <name>Troels Thomsen</name>
    <email>troethom@gmail.com</email>
  </author>
  <url>http://github.com/troethom/SubSonic-3.0/commit/115b206298f0a94ca92c35148f706ef9d3ccb86e</url>
  <id>115b206298f0a94ca92c35148f706ef9d3ccb86e</id>
  <committed-date>2009-07-08T11:17:15-07:00</committed-date>
  <authored-date>2009-07-08T11:14:24-07:00</authored-date>
  <message>Added support for new transaction scope to the methods that already use a batch query.</message>
  <tree>bdea7fa039ee450d516de2d8cfd53565e633b9b6</tree>
  <committer>
    <name>Troels Thomsen</name>
    <email>troethom@gmail.com</email>
  </committer>
</commit>
