Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MatchNamesWithUnderscores for Insert and Update #605

Closed
wants to merge 1 commit into from
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
115 changes: 101 additions & 14 deletions Dapper.Contrib/SqlMapperExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,15 @@

namespace Dapper.Contrib.Extensions
{
public static class Utility
{
public static string PascalCaseToSnakeCase(string pascalCaseString)
{
return string.Concat(pascalCaseString.Select((character, index)
=> index > 0 && char.IsUpper(character) ? "_" + character.ToString() : character.ToString())).ToLower();
}
}

public static partial class SqlMapperExtensions
{
// ReSharper disable once MemberCanBePrivate.Global
Expand Down Expand Up @@ -316,7 +325,15 @@ public static long Insert<T>(this IDbConnection connection, T entityToInsert, ID
for (var i = 0; i < allPropertiesExceptKeyAndComputed.Count; i++)
{
var property = allPropertiesExceptKeyAndComputed.ElementAt(i);
adapter.AppendColumnName(sbColumnList, property.Name); //fix for issue #336

var columnName = property.Name;

if (DefaultTypeMap.MatchNamesWithUnderscores)
{
columnName = Utility.PascalCaseToSnakeCase(columnName);
}

adapter.AppendColumnName(sbColumnList, columnName); //fix for issue #336
if (i < allPropertiesExceptKeyAndComputed.Count - 1)
sbColumnList.Append(", ");
}
Expand Down Expand Up @@ -691,8 +708,8 @@ public partial interface ISqlAdapter
int Insert(IDbConnection connection, IDbTransaction transaction, int? commandTimeout, string tableName, string columnList, string parameterList, IEnumerable<PropertyInfo> keyProperties, object entityToInsert);

//new methods for issue #336
void AppendColumnName(StringBuilder sb, string columnName);
void AppendColumnNameEqualsValue(StringBuilder sb, string columnName);
void AppendColumnName(StringBuilder sb, string propertyName);
void AppendColumnNameEqualsValue(StringBuilder sb, string propertyName);
}

public partial class SqlServerAdapter : ISqlAdapter
Expand All @@ -715,14 +732,28 @@ public int Insert(IDbConnection connection, IDbTransaction transaction, int? com
return id;
}

public void AppendColumnName(StringBuilder sb, string columnName)
public void AppendColumnName(StringBuilder sb, string propertyName)
{
var columnName = propertyName;

if (DefaultTypeMap.MatchNamesWithUnderscores)
{
columnName = Dapper.Contrib.Extensions.Utility.PascalCaseToSnakeCase(propertyName);
}

sb.AppendFormat("[{0}]", columnName);
}

public void AppendColumnNameEqualsValue(StringBuilder sb, string columnName)
public void AppendColumnNameEqualsValue(StringBuilder sb, string propertyName)
{
sb.AppendFormat("[{0}] = @{1}", columnName, columnName);
var columnName = propertyName;

if (DefaultTypeMap.MatchNamesWithUnderscores)
{
columnName = Dapper.Contrib.Extensions.Utility.PascalCaseToSnakeCase(propertyName);
}

sb.AppendFormat("[{0}] = @{1}", columnName, propertyName);
}
}

Expand All @@ -746,13 +777,27 @@ public int Insert(IDbConnection connection, IDbTransaction transaction, int? com
return id;
}

public void AppendColumnName(StringBuilder sb, string columnName)
public void AppendColumnName(StringBuilder sb, string propertyName)
{
var columnName = propertyName;

if (DefaultTypeMap.MatchNamesWithUnderscores)
{
columnName = Dapper.Contrib.Extensions.Utility.PascalCaseToSnakeCase(propertyName);
}

sb.AppendFormat("[{0}]", columnName);
}

public void AppendColumnNameEqualsValue(StringBuilder sb, string columnName)
public void AppendColumnNameEqualsValue(StringBuilder sb, string propertyName)
{
var columnName = propertyName;

if (DefaultTypeMap.MatchNamesWithUnderscores)
{
columnName = Dapper.Contrib.Extensions.Utility.PascalCaseToSnakeCase(propertyName);
}

sb.AppendFormat("[{0}] = @{1}", columnName, columnName);
}
}
Expand All @@ -776,13 +821,27 @@ public int Insert(IDbConnection connection, IDbTransaction transaction, int? com
return Convert.ToInt32(id);
}

public void AppendColumnName(StringBuilder sb, string columnName)
public void AppendColumnName(StringBuilder sb, string propertyName)
{
var columnName = propertyName;

if (DefaultTypeMap.MatchNamesWithUnderscores)
{
columnName = Dapper.Contrib.Extensions.Utility.PascalCaseToSnakeCase(propertyName);
}

sb.AppendFormat("`{0}`", columnName);
}

public void AppendColumnNameEqualsValue(StringBuilder sb, string columnName)
public void AppendColumnNameEqualsValue(StringBuilder sb, string propertyName)
{
var columnName = propertyName;

if (DefaultTypeMap.MatchNamesWithUnderscores)
{
columnName = Dapper.Contrib.Extensions.Utility.PascalCaseToSnakeCase(propertyName);
}

sb.AppendFormat("`{0}` = @{1}", columnName, columnName);
}
}
Expand Down Expand Up @@ -826,13 +885,27 @@ public int Insert(IDbConnection connection, IDbTransaction transaction, int? com
return id;
}

public void AppendColumnName(StringBuilder sb, string columnName)
public void AppendColumnName(StringBuilder sb, string propertyName)
{
var columnName = propertyName;

if (DefaultTypeMap.MatchNamesWithUnderscores)
{
columnName = Dapper.Contrib.Extensions.Utility.PascalCaseToSnakeCase(propertyName);
}

sb.AppendFormat("\"{0}\"", columnName);
}

public void AppendColumnNameEqualsValue(StringBuilder sb, string columnName)
public void AppendColumnNameEqualsValue(StringBuilder sb, string propertyName)
{
var columnName = propertyName;

if (DefaultTypeMap.MatchNamesWithUnderscores)
{
columnName = Dapper.Contrib.Extensions.Utility.PascalCaseToSnakeCase(propertyName);
}

sb.AppendFormat("\"{0}\" = @{1}", columnName, columnName);
}
}
Expand All @@ -854,13 +927,27 @@ public int Insert(IDbConnection connection, IDbTransaction transaction, int? com
return id;
}

public void AppendColumnName(StringBuilder sb, string columnName)
public void AppendColumnName(StringBuilder sb, string propertyName)
{
var columnName = propertyName;

if (DefaultTypeMap.MatchNamesWithUnderscores)
{
columnName = Dapper.Contrib.Extensions.Utility.PascalCaseToSnakeCase(propertyName);
}

sb.AppendFormat("\"{0}\"", columnName);
}

public void AppendColumnNameEqualsValue(StringBuilder sb, string columnName)
public void AppendColumnNameEqualsValue(StringBuilder sb, string propertyName)
{
var columnName = propertyName;

if (DefaultTypeMap.MatchNamesWithUnderscores)
{
columnName = Dapper.Contrib.Extensions.Utility.PascalCaseToSnakeCase(propertyName);
}

sb.AppendFormat("\"{0}\" = @{1}", columnName, columnName);
}
}