diff --git a/DynamORM.Tests/Helpers/PoolingTests.cs b/DynamORM.Tests/Helpers/PoolingTests.cs index aa5a72d..1ce1ba2 100644 --- a/DynamORM.Tests/Helpers/PoolingTests.cs +++ b/DynamORM.Tests/Helpers/PoolingTests.cs @@ -26,7 +26,6 @@ * THE POSSIBILITY OF SUCH DAMAGE. */ -using System; using NUnit.Framework; namespace DynamORM.Tests.Helpers @@ -63,7 +62,7 @@ namespace DynamORM.Tests.Helpers Database.Dispose(); Database = null; - Assert.Throws(() => cmd.ExecuteScalar()); + Assert.Throws(() => cmd.ExecuteScalar()); } /// Test single mode transaction disposing. diff --git a/DynamORM.Tests/Properties/AssemblyInfo.cs b/DynamORM.Tests/Properties/AssemblyInfo.cs index c6b3373..d285638 100644 --- a/DynamORM.Tests/Properties/AssemblyInfo.cs +++ b/DynamORM.Tests/Properties/AssemblyInfo.cs @@ -61,5 +61,5 @@ using System.Runtime.InteropServices; // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.1")] -[assembly: AssemblyFileVersion("1.0.0.1")] \ No newline at end of file +[assembly: AssemblyVersion("1.1.0.1")] +[assembly: AssemblyFileVersion("1.1.0.1")] \ No newline at end of file diff --git a/DynamORM/DynamicCommand.cs b/DynamORM/DynamicCommand.cs index 3b2da24..22f0198 100644 --- a/DynamORM/DynamicCommand.cs +++ b/DynamORM/DynamicCommand.cs @@ -57,7 +57,7 @@ namespace DynamORM else { _command = _con.Connection.CreateCommand(); - _db.CommandsPool[_con.Connection].Add(_command); + _db.CommandsPool[_con.Connection].Add(this); } } } @@ -134,11 +134,13 @@ namespace DynamORM ////_poolStamp = 0; _command.Connection = _con.Connection; } - else + else if (value == null) { _command.Transaction = null; _command.Connection = null; } + else + throw new InvalidOperationException("Can't assign direct IDbConnection implementation. This property accepts only DynamORM implementation of IDbConnection."); } } @@ -238,7 +240,7 @@ namespace DynamORM /// Gets or sets the transaction within which the Command /// object of a data provider executes. /// It's does nothing, transaction is peeked from transaction - /// pool of a connection. + /// pool of a connection. This is only a dummy. public IDbTransaction Transaction { get { return null; } set { } } /// Gets or sets how command results are applied to the @@ -264,13 +266,13 @@ namespace DynamORM { var pool = _db.CommandsPool.TryGetValue(_con.Connection); - if (pool != null && pool.Contains(_command)) - pool.Remove(_command); + if (pool != null && pool.Contains(this)) + pool.Remove(this); } - _command.Dispose(); - IsDisposed = true; + + _command.Dispose(); } } diff --git a/DynamORM/DynamicDatabase.cs b/DynamORM/DynamicDatabase.cs index c647451..56ad524 100644 --- a/DynamORM/DynamicDatabase.cs +++ b/DynamORM/DynamicDatabase.cs @@ -87,6 +87,7 @@ namespace DynamORM internal Dictionary> TransactionPool { get; private set; } /// Gets pool of connections and commands. + /// Pool should contain dynamic commands instead of native ones. internal Dictionary> CommandsPool { get; private set; } /// Gets schema columns cache. diff --git a/DynamORM/DynamicTransaction.cs b/DynamORM/DynamicTransaction.cs index 3bc7efb..75b947f 100644 --- a/DynamORM/DynamicTransaction.cs +++ b/DynamORM/DynamicTransaction.cs @@ -49,7 +49,6 @@ namespace DynamORM /// This action is invoked when transaction is disposed. internal DynamicTransaction(DynamicDatabase db, DynamicConnection con, bool singleTransaction, IsolationLevel? il, Action disposed) { - IsDisposed = false; _db = db; _con = con; _singleTransaction = singleTransaction; @@ -63,7 +62,8 @@ namespace DynamORM _operational = false; else { - _db.TransactionPool[_con.Connection].Push(_con.Connection.BeginTransaction()); + _db.TransactionPool[_con.Connection] + .Push(il.HasValue ? _con.Connection.BeginTransaction(il.Value) : _con.Connection.BeginTransaction()); _db.PoolStamp = DateTime.Now.Ticks; _operational = true; } @@ -137,12 +137,10 @@ namespace DynamORM if (_disposed != null) _disposed(); - - IsDisposed = true; } /// Gets a value indicating whether this instance is disposed. - public bool IsDisposed { get; private set; } + public bool IsDisposed { get { return !_operational; } } #endregion IExtendedDisposable Members } diff --git a/DynamORM/Properties/AssemblyInfo.cs b/DynamORM/Properties/AssemblyInfo.cs index 9458c1c..34b892d 100644 --- a/DynamORM/Properties/AssemblyInfo.cs +++ b/DynamORM/Properties/AssemblyInfo.cs @@ -62,6 +62,6 @@ using System.Runtime.InteropServices; // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.1")] -[assembly: AssemblyFileVersion("1.0.0.1")] +[assembly: AssemblyVersion("1.1.0.1")] +[assembly: AssemblyFileVersion("1.1.0.1")] [assembly: InternalsVisibleTo("DynamORM.Tests")] \ No newline at end of file