diff --git a/Massive/Massive.cs b/Massive/Massive.cs index 6566c1a97ccfa6494ef37b7bcdcf7b5cdf502a32..3807922d2a6565bcce28308f8bfb1809ba30a6d9 100644 --- a/Massive/Massive.cs +++ b/Massive/Massive.cs @@ -123,6 +123,22 @@ public DynamicModel(string connectionString = "", string tableName = "", string _factory = DbProviderFactories.GetFactory(_providerName); _connectionString = connectionString; } + + public virtual List QueryHacked(string sql, DbConnection connection, params object[] args) + { + List list = new List(); + using(var rdr = CreateCommand(sql, connection, args).ExecuteReader(CommandBehavior.Default)) + while (rdr.Read()) + { + var e = new ExpandoObject(); + var d = e as IDictionary; + for (var i = 0; i < rdr.FieldCount; i++) + d.Add(rdr.GetName(i), rdr[i]); + list.Add(e); + } + return list; + } + /// /// Enumerates the reader yielding the result - thanks to Jeroen Haegebaert /// diff --git a/PerformanceTests.cs b/PerformanceTests.cs index 8c01659599d382b2ceeb73f2d185c6d0bc5aef4d..5d3b944af0a7b777f4c9723b2161ad331b0a8c68 100644 --- a/PerformanceTests.cs +++ b/PerformanceTests.cs @@ -97,6 +97,11 @@ public void Run(int iterations) var massiveConnection = new DynamicModel(Program.connectionString); tests.Add(id => massiveConnection.Query("select * from Posts where Id = @0", id).ToList(), "Dynamic Massive ORM Query"); + // Massive was hacked a bit to support an open connection, the intention is to add this to the API at some point + var massiveConnection2 = new DynamicModel(Program.connectionString); + var hackedConnection = Program.GetOpenConnection(); + tests.Add(id => massiveConnection.QueryHacked("select * from Posts where Id = @0", hackedConnection , id).ToList(), "Dynamic Massive ORM Query (hacked)"); + // HAND CODED diff --git a/SqlMapper.cs b/SqlMapper.cs index 1ff87daad7badf37267eb1cb0d8509e42cfb91ac..16b3dbf71bd63b731fb06287b56cd268dd391f88 100644 --- a/SqlMapper.cs +++ b/SqlMapper.cs @@ -252,7 +252,7 @@ private static IDbCommand SetupCommand(IDbConnection cnn, SqlTransaction tranact foreach (var info in paramInfo) { var param = new SqlParameter("@" + info.Name, info.Type); - + param.Value = info.Val ?? DBNull.Value; param.Direction = ParameterDirection.Input;