Wie kann ich die SQL-Uniqueidentifier-Spalte mithilfe eines Dapper-Dot-Net einem .NET-Typ zuordnen?

.net dapper tsql

Frage

Ich habe eine vorhandene Datenbank, die den SQL-Typ "uniqueidentifier" verwendet, der wie ein anderes GUID-Format als eine .Net-GUID aussieht.

Frage: Wie kann ich die SQL-Uniqueidentifier-Spalte für .Net mit Dapper verknüpfen?

Problem: Wenn Dapper-dot-net verwendet wird, wenn die Spalte mit dem GUID-Typ .Net zugeordnet wird, wird kompiliert und ausgeführt, aber die gesamte Ausgabe von .ToString () zeigt dieselbe falsche GUID an. (Nun, es entspricht nicht dem, was ich in SSMS sehe)

Wenn ich versuche, die Spalte mit dem Stringtyp zuzuordnen, erhalte ich einen Compilerfehler.

Ideen? Ist das möglich?

Beliebte Antwort

Ich fand auch, dass ich es zu einem varchar in T-SQL werfen konnte, aber ich wollte den tatsächlichen GUID-Typ in .NET.

Mit Dapper 1.38 (auch mit SQL Server als zugrunde liegendes RDBMS), hatte ich keine Probleme mit der Zuordnung, wenn ich die POCO-Eigenschaft eine Nullable<Guid> . Eine SqlGuid oder eine Zeichenfolge funktionierte nicht.

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

Als Konsolen-App spuckt es folgendes aus:

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


Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow