Usando Dapper-dot-net, ¿cómo mapeo la columna SQL uniqueidentifier a un tipo .Net?

.net dapper tsql

Pregunta

Tengo una base de datos existente que usa el tipo SQL "uniqueidentifier", que se parece a un formato de GUID diferente que un .NET GUID.

Pregunta: Usando Dapper, ¿cómo mapeo la columna SQL uniqueidentifier a .Net?

Problema: al usar Dapper-dot-net, cuando mapeo la columna con el tipo de GUID de .Net, se compila y se ejecuta, pero todos los resultados de .ToString () muestran el mismo GUID incorrecto. (bueno, no coincide con lo que veo en SSMS)

Cuando trato de mapear la columna usando el tipo de cadena, obtengo un error de compilación.

Ideas? es posible?

Respuesta popular

También encontré que podía convertirlo a un varchar en T-SQL, pero quería el tipo de GUID real en .NET.

Con Dapper 1.38 (también usando SQL Server como el RDBMS subyacente), no tuve problemas con el mapeo si convertí la propiedad POCO en un Nullable<Guid> . Un SqlGuid o una cadena no funcionó.

public class MapMe
{
    public Guid? GuidByDapper { get; set; }
}

class Program
{
    static void Main(string[] args)
    {
        using (var connection = Utility.GetConnection())
        {
            var mapped = connection.Query<MapMe>("SELECT NEWID() AS GuidByDapper").Single();
            Console.WriteLine("Guid: {0}", mapped.GuidByDapper);
        }
    }
}

Como aplicación de consola, escupe lo siguiente:

Guid: 85d17a50-4122-44ee-a118-2a6da2a45461


Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow