using System.Collections.Generic;
using System.Data.SqlClient;
public static class Program
public int CustomerID {get;set;}
public string CustomerName {get;set;}
public string ContactName {get;set;}
public string Address {get;set;}
public string City {get;set;}
public string PostalCode {get;set;}
public string Country {get;set;}
public int OrderDetailID { get; set; }
public int OrderID { get; set; }
public int ProductID { get; set; }
public int Quantity { get; set; }
public static void Main()
string sqlOrderDetails = "SELECT top 5 * FROM OrderDetails;";
string sqlOrderDetail = "SELECT * FROM OrderDetails WHERE OrderDetailID = @OrderDetailID;";
string sqlCustomerInsert = "IF NOT EXISTS (SELECT 1 from Customers where CustomerName ='Mark') INSERT INTO Customers (CustomerName) Values (@CustomerName);";
using (var connection = new SqlConnection(FiddleHelper.GetConnectionStringSqlServerW3Schools()))
var affectedRows = connection.Execute(sqlCustomerInsert, new {CustomerName = "Mark"});
DynamicParameters _param = new DynamicParameters();
_param.Add("@CustomerName","Mark");
var lstCust = connection.Query<Customer>("select CustomerName from Customers where CustomerName = @CustomerName",_param);
Console.WriteLine("Mark Found? - " + lstCust.Count());
Console.WriteLine(_param.ArgsAsSql());
public static string ArgsAsSql(this DynamicParameters args)
var sb = new StringBuilder();
foreach (var name in args.ParameterNames)
var pValue = args.Get<dynamic>(name);
var type = pValue.GetType();
if (type == typeof(DateTime))
sb.AppendFormat("DECLARE @{0} DATETIME ='{1}'\n", name, pValue.ToString("yyyy-MM-dd HH:mm:ss.fff"));
else if (type == typeof(bool))
sb.AppendFormat("DECLARE @{0} BIT = {1}\n", name, (bool)pValue ? 1 : 0);
else if (type == typeof(int))
sb.AppendFormat("DECLARE @{0} INT = {1}\n", name, pValue);
else if (type == typeof(List<int>))
sb.AppendFormat("-- REPLACE @{0} IN SQL: ({1})\n", name, string.Join(",", (List<int>)pValue));
sb.AppendFormat("DECLARE @{0} NVARCHAR(MAX) = '{1}'\n", name, pValue.ToString());