¿Cómo puedo unir los nombres de tabla / columna de subrayado automáticamente usando Dapper-Extensions?

c# dapper dapper-extensions mysql

Pregunta

Estoy nombrando mis tablas y columnas MYSQL usando caracteres de subrayado:

this_is_a_table debe mapear a: ThisIsATable

this_is_a_column debe mapear a: ThisIsAColumn

Dapper puede manejar esta asignación si configuro:

DefaultTypeMap.MatchNamesWithUnderscores = true;

¿Hay alguna manera de habilitar esto en Dapper-Extensions para que se correlacione unadescore automáticamente?

Respuesta popular

Es bastante sencillo, solo necesitas crear una asignación personalizada . Aquí hay un ejemplo:

Crear mesa:

create table hello_world
(
    Id int not null,
    Value_Column varchar(max)
)

Prueba:

public class World
{
    public int Id { get; set; }
    public string Value { get; set; }
}

public class WorldCustomMapper : ClassMapper<World>
{
    public WorldCustomMapper()
    {
        base.Table("hello_world");
        Map(f => f.Id).Column("Id");
        Map(f => f.Value).Column("Value_Column");
    }
}

[TestFixture]
public class Class1
{
    [Test]
    public void TestMappping()
    {
        var conn = new SqlConnection(@"Data Source=.\sqlexpress; Integrated Security=true; Initial Catalog=mydb");
        conn.Open();

        var record = new World
        {
            Id = 1,
            Value = "Hi"
        };

        conn.Insert(record);

        var result = conn.Get<World>(1);

        Assert.That(result.Value, Is.EqualTo("Hi"));

    }
}


Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué