diff --git a/DapperExtensions.Test/DapperExtensions.Test.csproj b/DapperExtensions.Test/DapperExtensions.Test.csproj
index 7901e8a9..c8347c83 100644
--- a/DapperExtensions.Test/DapperExtensions.Test.csproj
+++ b/DapperExtensions.Test/DapperExtensions.Test.csproj
@@ -39,6 +39,7 @@
+
diff --git a/DapperExtensions.Test/Mapper/ClassMapperFixture.cs b/DapperExtensions.Test/Mapper/ClassMapperFixture.cs
index a4f6e4fa..66ac4f77 100644
--- a/DapperExtensions.Test/Mapper/ClassMapperFixture.cs
+++ b/DapperExtensions.Test/Mapper/ClassMapperFixture.cs
@@ -4,6 +4,7 @@
using NUnit.Framework;
using System;
using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations.Schema;
using System.Diagnostics.CodeAnalysis;
using System.Linq;
using System.Linq.Expressions;
@@ -319,6 +320,19 @@ public void DoesNotMapPropertyWhenCanMapIsFalse()
}
}
+ [TestFixture]
+ public class UnderscoreColumnsTest: ClassMapperFixtureBase
+ {
+ [Test]
+ public void ValidateUnderScoreProperties()
+ {
+ var mapper = new TestMapper();
+ mapper.TestProtected().RunMethod("AutoMap");
+ Assert.AreEqual(3, mapper.Properties.Count);
+ }
+
+ }
+
[TestFixture]
public class ReferenceMapTests : ClassMapperFixtureBase
{
@@ -398,7 +412,14 @@ public class Bar
public long BarId { get; set; }
public string Name { get; set; }
}
-
+ [ExcludeFromCodeCoverage]
+ public class FooUnderscore
+ {
+ public long FooId { get; set; }
+ [Column("first_name")]
+ public string FirstName { get; set; }
+ public string LastName { get; set; }
+ }
[ExcludeFromCodeCoverage]
public class TestMapper : ClassMapper where T : class
{
diff --git a/DapperExtensions/DapperExtensions.csproj b/DapperExtensions/DapperExtensions.csproj
index 97685550..5f9a39ea 100644
--- a/DapperExtensions/DapperExtensions.csproj
+++ b/DapperExtensions/DapperExtensions.csproj
@@ -89,6 +89,7 @@
+
diff --git a/DapperExtensions/Mapper/ClassMapper.cs b/DapperExtensions/Mapper/ClassMapper.cs
index aabd437e..34ebf51d 100644
--- a/DapperExtensions/Mapper/ClassMapper.cs
+++ b/DapperExtensions/Mapper/ClassMapper.cs
@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations.Schema;
using System.Globalization;
using System.Linq;
using System.Linq.Expressions;
@@ -114,7 +115,7 @@ protected virtual void AutoMap(Func canMap)
{
continue;
}
-
+ this.MapUnderScoreColumns();
var map = Map(propertyInfo);
if (!hasDefinedKey)
{
@@ -134,7 +135,23 @@ protected virtual void AutoMap(Func canMap)
? PropertyTypeKeyTypeMapping[keyMap.MemberType]
: KeyType.Assigned);
}
-
+ ///
+ /// Map Underscore columns i.e. first_name using columns attribute
+ /// [Column("first_name")]
+ /// Public FirstName {get;set;}
+ ///
+ private void MapUnderScoreColumns()
+ {
+ #region //Handling under score columns properties using Columns Attribute while Insert, Update & Delete Operations
+ foreach (MemberMap mp in this.Properties)
+ {
+ ColumnAttribute columnAttribute = mp.MemberInfo.GetCustomAttribute();
+ var propertyMap = mp as MemberMap;
+ if (propertyMap != null && columnAttribute != null)
+ propertyMap.Column(columnAttribute.Name);
+ }
+ #endregion
+ }
protected virtual IReferenceMap ReferenceMap(Expression> expression)
{
var propertyInfo = ReflectionHelper.GetProperty(expression) as PropertyInfo;
@@ -173,6 +190,7 @@ protected virtual MemberMap Map(Expression> expression)
protected virtual MemberMap Map(PropertyInfo propertyInfo, MemberMap parent = null)
{
var result = new MemberMap(propertyInfo, this, parent: parent);
+
if (GuardForDuplicatePropertyMap(result))
{
result = (MemberMap)Properties.FirstOrDefault(p => p.Name.Equals(result.Name) && p.ParentProperty == result.ParentProperty);
@@ -181,6 +199,14 @@ protected virtual MemberMap Map(PropertyInfo propertyInfo, MemberMap parent = nu
{
Properties.Add(result);
}
+
+ //foreach (MemberMap mp in this.Properties)
+ //{
+ // System.ComponentModel.DataAnnotations.Schema.ColumnAttribute columnAttribute = mp.MemberInfo.GetCustomAttribute();
+ // var propertyMap = mp as MemberMap;
+ // if (propertyMap != null && columnAttribute != null)
+ // propertyMap.Column(columnAttribute.Name);
+ //}
return result;
}