diff --git a/src/MockDbProvider.Tests/AcceptanceTests.cs b/src/MockDbProvider.Tests/AcceptanceTests.cs
index 6562ba3..b471e06 100644
--- a/src/MockDbProvider.Tests/AcceptanceTests.cs
+++ b/src/MockDbProvider.Tests/AcceptanceTests.cs
@@ -101,5 +101,19 @@ public void CanGetScalar()
var result = SUT.DataAccess.GetUserId("abc", "test");
Assert.AreEqual(15559, result);
}
+
+ [TestMethod]
+ public void CanCreateTransaction()
+ {
+ var factory = DbProviderFactories.GetFactory("MockDbProvider") as MockDbProviderFactory;
+
+ using (var conn = factory.CreateConnection())
+ {
+ using (var trn = conn.BeginTransaction())
+ {
+ Assert.IsNotNull(trn);
+ }
+ }
+ }
}
}
diff --git a/src/MockDbProvider/MockDbConnection.cs b/src/MockDbProvider/MockDbConnection.cs
index c7f8029..f0de38a 100644
--- a/src/MockDbProvider/MockDbConnection.cs
+++ b/src/MockDbProvider/MockDbConnection.cs
@@ -17,7 +17,7 @@ internal MockDbConnection(IMockCommandExecution exec)
}
protected override DbTransaction BeginDbTransaction(System.Data.IsolationLevel isolationLevel)
{
- throw new NotImplementedException();
+ return new MockDbTransaction(isolationLevel, this);
}
public override void ChangeDatabase(string databaseName)
diff --git a/src/MockDbProvider/MockDbProvider.csproj b/src/MockDbProvider/MockDbProvider.csproj
index b99b326..1a8d9b4 100644
--- a/src/MockDbProvider/MockDbProvider.csproj
+++ b/src/MockDbProvider/MockDbProvider.csproj
@@ -49,6 +49,7 @@
+
Component
@@ -79,4 +80,4 @@
-->
-
\ No newline at end of file
+
diff --git a/src/MockDbProvider/MockDbTransaction.cs b/src/MockDbProvider/MockDbTransaction.cs
new file mode 100644
index 0000000..7963f8c
--- /dev/null
+++ b/src/MockDbProvider/MockDbTransaction.cs
@@ -0,0 +1,37 @@
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.Data.Common;
+using System.Linq;
+using System.Text;
+
+namespace MockDbProvider
+{
+ public class MockDbTransaction
+ : DbTransaction
+ {
+ private readonly IsolationLevel _isolationLevel;
+
+ public override IsolationLevel IsolationLevel { get { return _isolationLevel; } }
+
+ private readonly DbConnection _dbConnection;
+
+ protected override DbConnection DbConnection { get { return _dbConnection; } }
+
+ public override void Commit()
+ { // in a mock setting I am not sure how this functionality is mockable
+
+ }
+
+ public override void Rollback()
+ { // in a mock setting I am not sure how this functionality is mockable
+
+ }
+
+ internal MockDbTransaction(IsolationLevel isolationLevel, DbConnection connection)
+ {
+ _isolationLevel = isolationLevel;
+ _dbConnection = connection;
+ }
+ }
+}