¿Cómo puedo asignar BINARY (16) a GUID con Dapper?

dapper guid mariadb mysql

Pregunta

Tengo los datos almacenados en la base de datos como BINARY(16) y me gustaría seleccionar los datos usando dapper y asignarlos a una propiedad del modelo que es una Guid . ¿Cuál es una buena manera de hacer esto?

Dapper 1.50.4

Respuesta popular

Si toda su guía en nuestra base de datos se almacena como BINARY (16), continuaría y crearía un Handler de Tipo Personalizado para convertir automáticamente el formato binario a GUID. Algo como:

class BinaryGuid {
  public Guid Guid;
  public BinaryGuid(byte[] binaryGuid) {
    <your-code-here>  
  } 
}

public class BinaryGuidHandler: SqlMapper.TypeHandler<BinaryGuid>
{
    public override Roles Parse(object value)
    {
        <your-code-here>
    }

    public override void SetValue(IDbDataParameter parameter, BinaryGuid value)
    {
        <your-code-here>
    }
}

luego lo registras para que Dapper lo use

SqlMapper.AddTypeHandler(new BinaryGuidHandler());

y deberías estar listo para ir:

var r = conn.Query<BinaryGuid>("SELECT MyBinaryGuid FROM MyTable")

Escribí un artículo (y ejemplos) sobre cómo administrar tipos personalizados en Dapper aquí:

https://medium.com/dapper-net/custom-type-handling-4b447b97c620



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é