Skip to content

Commit bf472b9

Browse files
committed
Bulk update honours Transaction (fix issue ThatRendle#203)
1 parent a571670 commit bf472b9

File tree

2 files changed

+29
-0
lines changed

2 files changed

+29
-0
lines changed

Simple.Data.Ado/BulkUpdater.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,10 @@ public int Update(AdoAdapter adapter, string tableName, IList<IDictionary<string
3737
using (connection.MaybeDisposable())
3838
using (var command = commandBuilder.GetRepeatableCommand(connection))
3939
{
40+
if (transaction != null)
41+
{
42+
command.Transaction = transaction;
43+
}
4044
connection.OpenIfClosed();
4145
var propertyToParameterMap = CreatePropertyToParameterMap(data, table, command);
4246

Simple.Data.BehaviourTest/TransactionTest.cs

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,31 @@ public void TestUpdateWithStaticObject()
152152
Assert.AreEqual(1, mockDatabase.Parameters[3]);
153153
Assert.IsTrue(MockDbTransaction.CommitCalled);
154154
}
155+
156+
[Test]
157+
public void TestBulkUpdateWithStaticObject()
158+
{
159+
var mockDatabase = new MockDatabase();
160+
dynamic database = CreateDatabase(mockDatabase);
161+
var user = new User
162+
{
163+
Id = 1,
164+
Name = "Steve",
165+
Age = 50
166+
};
167+
var users = new[] {user};
168+
using (var transaction = database.BeginTransaction())
169+
{
170+
transaction.Users.Update(users);
171+
transaction.Commit();
172+
}
173+
Assert.AreEqual("update [dbo].[Users] set [Name] = @p1, [Password] = @p2, [Age] = @p3 where [dbo].[Users].[Id] = @p4".ToLowerInvariant(), mockDatabase.Sql.ToLowerInvariant());
174+
Assert.AreEqual("Steve", mockDatabase.Parameters[0]);
175+
Assert.AreEqual(DBNull.Value, mockDatabase.Parameters[1]);
176+
Assert.AreEqual(50, mockDatabase.Parameters[2]);
177+
Assert.AreEqual(1, mockDatabase.Parameters[3]);
178+
Assert.IsTrue(MockDbTransaction.CommitCalled);
179+
}
155180

156181
[Test]
157182
public void TestUpdateByWithStaticObject()

0 commit comments

Comments
 (0)