Send SqlParameter to Dapper

c# dapper

Question

I' using Dapper in my project. I have a list of SqlParameters and I want to send it to Dapper. But Dapper needs an object (name, value). How can I convert a SqlParameter to an object. I know this doesn't work:

conn.Query<TModel>(sql, parameters.Select(p => new {p.ParameterName=p.Value}))

any suggestions?

Accepted Answer

Stumbled across this looking for something else - but can offer some insight that may help others in the future.

You can use the Dapper.DynamicParameters object to add items that can be legally passed to Dapper Queries, i.e. (hand-coded)

var args = new DynamicParameters(new {});
parameters.ForEach(p => args.Add(p.ParameterName, p.Value));
conn.Query<TModel>(sql, args );

HTH


Popular Answer

In addition You can also assign direction of your input parameters, data types,

var parameters = new DynamicParameters();
            parameters.Add(name: "@UserId", value: obj.DriverId, dbType: DbType.String, direction: ParameterDirection.Input);
            parameters.Add(name: "@Password", value: obj.DPassword, dbType: DbType.String, direction: ParameterDirection.Input);
            parameters.Add(name: "@IMEINo", value: obj.IMEINo, dbType: DbType.String, direction: ParameterDirection.Input);
            return DatabaseHub.Query<object>(storedProcedureName: @"[dbo].[sp_m_GetAppLoginCheckData]", parameters: parameters, dbName: AMSDB).FirstOrDefault();


Licensed under: CC-BY-SA with attribution
Not affiliated with Stack Overflow
Is this KB legal? Yes, learn why
Licensed under: CC-BY-SA with attribution
Not affiliated with Stack Overflow
Is this KB legal? Yes, learn why