Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to get Dapper to ignore/remove underscores in field names when mapping?

There are many ways to map database field names to class names, but what is the simplest way to just remove the underscores?

    public IEnumerable<PersonResult> GetPerson(int personId)
    {
        using (var dbConnection = _dbConnectionFactory.Create(ConnectionStrings.ProjectXYZ))
        {
            IEnumerable<PersonResult> result =
                dbConnection.Query<PersonResult>("fn_get_person", new { personId },
                    commandType: CommandType.StoredProcedure).ToList();

            return result;
        }
    }

Table and database fields:

person
-------- 
person_id
full_name

Class that works: (dapper already ignores capitalization)

public class PersonResult
{    
    public int Person_Id { get; set; }
    public string Full_Name { get; set; }
}

What I would like to change the class to:

public class PersonResult
{    
    public int PersonId { get; set; }
    public string FullName { get; set; }
}
like image 988
scw Avatar asked Dec 30 '15 16:12

scw


2 Answers

Dapper.DefaultTypeMap.MatchNamesWithUnderscores = true;

job done ;p

like image 136
Marc Gravell Avatar answered Nov 15 '22 05:11

Marc Gravell


The readme doesn't show any support for renaming columns. You could alias them in select:

select person_id as personid, full_name as fullname from fn_get_person();

as suggested in this answer.

like image 3
Andomar Avatar answered Nov 15 '22 06:11

Andomar