Crear una convención para los identificadores que usan dapper

c# dapper dapper-extensions dommel

Pregunta

Me gustaría crear una convención para configurar la columna llamada "Id" para que sea la clave principal, he estado buscando en la documentación y hasta ahora me he esforzado por hacerlo manualmente clase por clase como: con Dommel:

public class ProductMap : DommelEntityMap<TEntity>
{
    public ProductMap()
    {
        Map(p => p.Id).IsKey();
    }
}

Me gustaría algo más como:

    public ConventionMap()
    {
        Properties<int>().Where(p=>p.Name.ToLower()=="id").isKey();
    }

podría ser extensiones dommel o aptas o cualquier otra, solo esta implementación es fluida.

¿algún consejo? ¡Gracias!

Respuesta aceptada

Dommel le permite crear un IKeyPropertyResolver personalizado.

Su implementación se vería así:

public class CustomKeyPropertyResolver : DommelMapper.IKeyPropertyResolver
{
    public PropertyInfo ResolveKeyProperty(Type type)
    {
        return type.GetProperties().Single(p => p.Name.ToLower() == "id");
    }
}

Que debería registrarse al inicio de la aplicación usando esta línea de código:

DommelMapper.SetKeyPropertyResolver(new CustomKeyPropertyResolver());

No necesita Dapper.FluentMap (o Dapper.FluentMap.Dommel) para esto. Ver también: la documentación .



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é