From 4e187f013a61361d813bdcb5b53cbffe1bb4c094 Mon Sep 17 00:00:00 2001 From: Marc Gravell Date: Tue, 28 May 2013 19:38:58 +0100 Subject: [PATCH] Added example/test for http://stackoverflow.com/q/16796519/23354 --- Tests/Tests.cs | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/Tests/Tests.cs b/Tests/Tests.cs index 1e295c4a..4b2849d9 100644 --- a/Tests/Tests.cs +++ b/Tests/Tests.cs @@ -12,6 +12,7 @@ using System.Reflection; using System.Dynamic; using System.ComponentModel; using Microsoft.CSharp.RuntimeBinder; +using System.Data.Common; #if POSTGRESQL using Npgsql; #endif @@ -1613,6 +1614,36 @@ Order by p.Id"; connection.Execute("drop table #Users drop table #Posts drop table #Comments"); } + public class DbParams : Dapper.SqlMapper.IDynamicParameters, IEnumerable + { + private readonly List parameters = new List(); + public IEnumerator GetEnumerator() { return parameters.GetEnumerator(); } + IEnumerator IEnumerable.GetEnumerator() { return GetEnumerator(); } + public void Add(IDbDataParameter value) + { + parameters.Add(value); + } + void Dapper.SqlMapper.IDynamicParameters.AddParameters(IDbCommand command, + Dapper.SqlMapper.Identity identity) + { + foreach (IDbDataParameter parameter in parameters) + command.Parameters.Add(parameter); + } + } + public void TestCustomParameters() + { + var args = new DbParams { + new SqlParameter("foo", 123), + new SqlParameter("bar", "abc") + }; + var result = connection.Query("select Foo=@foo, Bar=@bar", args).Single(); + int foo = result.Foo; + string bar = result.Bar; + foo.IsEqualTo(123); + bar.IsEqualTo("abc"); + } + + public void TestReadDynamicWithGridReader() { var createSql = @"