Wie wird ein Dictionary-Objekt aus Datenbankergebnissen mit Dapper Dot Net abgebildet?
Wenn ich eine einfache Abfrage wie:
string sql = "SELECT UniqueString, ID FROM Table";
und ich möchte, um eine Karte zu einem dictionary-Objekt wie:
Dictionary<string, int> myDictionary = new Dictionary<string, int>();
Wie würde ich das mit Dapper?
Ich nehme an, es ist so etwas wie:
myDictionary = conn.Query<string, int>(sql, new { }).ToDictionary();
Aber kann nicht herausfinden, die richtige syntax.
InformationsquelleAutor der Frage jpshook | 2013-02-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es verschiedene Möglichkeiten, wie bereits dargestellt; ich persönlich würde nur die nicht-generische api:
InformationsquelleAutor der Antwort Marc Gravell
Funktioniert auch ohne eine zusätzliche Klasse:
HINWEIS: Bei Verwendung Dapper.NET version 3.5, die Query-Methode, die den ersten, zweiten und Rückgabe-Typen erfordert, dass Sie mehr Parameter angegeben, als die .NET 4.0 und .NET 4.5-Versionen nutzen optionale Argumente.
In diesem Fall, der folgende code sollte funktionieren:
Meisten Argumente wieder einen Standard, aber
splitOn
erforderlich ist, als es sonst Standard-Wert 'id'.Für eine Abfrage gibt zwei Spalten, 'ID' und 'Beschreibung',
splitOn
sollte auf 'Beschreibung'.InformationsquelleAutor der Antwort Tim Schmelter
Ich bin mir nicht sicher, ob das, was Sie zu tun versuchen ist möglich. Wenn Sie eine Klasse definieren, zuordnen der Abfrage zu, wird dies weit mehr trivial:
Dann würden Sie genau dies tun:
InformationsquelleAutor der Antwort w.brian
Dapper hat auch eine Erweiterungsmethode für
ExecuteReader
. So, könnten Sie dies auch tun:Dieser Ansatz funktioniert, ohne zu wissen, den Namen der Spalten. Außerdem, wenn Sie nicht wissen, die Daten-Typen, Sie könnte sich ändern
Dictionary<string,int>
zuDictionary<string,object>
undGetInt32(i)
zuGetValue(i)
.InformationsquelleAutor der Antwort dalenewman