Table of Contents

Parameter Properties

The library enables you to configure parameter properties via the AddParameter method. For example, you may want to define a parameter's DbType, as shown below.

int id = 10;

var builder = SimpleBuilder.Create($"SELECT * FROM User WHERE Id = @id")
    .AddParameter("id", value: id, dbType: DbType.Int32);

However, the library also provides an extension method, DefineParam, to streamline this process when using interpolated strings.

using Dapper.SimpleSqlBuilder.Extensions;

int id = 10;

// Define parameter properties
var idParam = id.DefineParam(dbType: DbType.Int32);
var builder = SimpleBuilder.Create($"SELECT * FROM User WHERE Id = {idParam}");

// OR

// Defining parameter properties in-line
var fluentBuilder = SimpleBuilder.CreateFluent()
    .Select($"*")
    .From($"User")
    .Where($"Id = {id.DefineParam(dbType: DbType.Int32)}");

The DefineParam extension method enables you to define the DbType, Size, Precision and Scale of your parameter. This should only be used for parameters passed into the interpolated string, as the ParameterDirection is always set to Input for values in the interpolated string.

A defined parameter is reused when it appears more than once in the same builder, independently of the reuseParameters setting. Pass reuse: false to get a separate parameter for each use.

var idParam = id.DefineParam(dbType: DbType.Int32, reuse: false);

For cases where you don't want to use the extension method, you can manually create the parameter object:

var idParam = new SimpleParameterInfo(id, dbType: DbType.Int64);