Usando Dapper-dot-net, come posso mappare la colonna SQL uniqueidentifier in un tipo .Net?

.net dapper tsql

Domanda

Ho un database esistente che utilizza il tipo SQL "uniqueidentifier", che sembra un formato GUID diverso da un GUID .Net.

Domanda: Usando Dapper, come posso mappare la colonna SQL uniqueidentifier a .Net?

Problema: utilizzando Dapper-dot-net, quando mappo la colonna utilizzando il tipo GUID .Net, viene compilato ed eseguito, ma tutti gli output .ToString () visualizzano lo stesso GUID errato. (beh, non corrisponde a quello che vedo in SSMS)

Quando provo a mappare la colonna usando il tipo di stringa, ottengo un errore del compilatore.

Idee? È possibile?

Risposta popolare

Ho anche scoperto che potevo trasmetterlo a un varchar in T-SQL, ma volevo l'effettivo tipo GUID in .NET.

Con Dapper 1.38 (anche utilizzando SQL Server come RDBMS sottostante), non ho avuto problemi con il mapping se ho reso la proprietà POCO un Nullabile Nullable<Guid> . Un SqlGuid o una stringa non ha funzionato.

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);
        }
    }
}

Come app della console, sputa quanto segue:

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


Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow