From a09dcbd863a07a6ac0398db7c7bf76c2d5befa1b Mon Sep 17 00:00:00 2001 From: Sam Saffron Date: Tue, 5 Apr 2011 13:11:08 +1000 Subject: [PATCH] added massive with open connection --- Massive/Massive.cs | 16 ++++++++++++++++ PerformanceTests.cs | 5 +++++ SqlMapper.cs | 2 +- 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/Massive/Massive.cs b/Massive/Massive.cs index 6566c1a..3807922 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 8c01659..5d3b944 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 1ff87da..16b3dbf 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; -- GitLab