DapperLib / Dapper.Contrib

Dapper community contributions - additional extensions for Dapper
Other
267 stars 99 forks source link

Added support to set a custom parameter prefix (instead of '@') #152

Open jonataspc opened 1 year ago

jonataspc commented 1 year ago

Added support for defining a custom parameter prefix (instead of the hard-coded @) for SQL query and parameters collection, separately.

Some providers have problems with @ as a default parameter prefix when used with Dapper, such as Devart dotConnect for MySQL. In that specific case, we have to use : on the SQL query instead (e.g: SELECT foo FROM table WHERE bar=:parameter). With this feature we are able to use Dapper.Contrib on those scenarios.

The configuration was implemented using delegate pattern (same way of GetDatabaseType and TableNameMapper)

Example of use:

SqlMapperExtensions.GetParameterPrefixForQuery = () => ":";
SqlMapperExtensions.GetParameterPrefixForParameterCollection = () => "@";

This PR may also solve/fix:

14

124

127

Related topics: https://github.com/DapperLib/Dapper/issues/1296 https://github.com/DapperLib/Dapper/issues/1232

jonataspc commented 1 year ago

Looks good to me. A much needed one. If I may also request, can the readme/documentation be updated about this feature/custom support? Let me know if i can be of any help in contributing as well. At this point, I am not sure if I have the authority to approve and the contributor process to adhere in.

Sure, documentation was changed to describe the feature.

aravindk777 commented 1 year ago

@jonataspc - This requires a maintainer to give the final approval to merge/approval workflows.

Safirion commented 11 months ago

Does it solve ODBC parameters syntax : ?paramname? ?

Or does it need a parameter suffix to be add ?

jonataspc commented 11 months ago

Does it solve ODBC parameters syntax : ?paramname? ?

Or does it need a parameter suffix to be add ?

I think you'll need a parameter suffix to work with ODBC indeed. This PR only adds a custom prefix param.