Ich habe diese einfache SQL-Abfrage:Wie fülle ich eine Auflistungseigenschaft von SqlDataReader?
SELECT CustomerName, OrderId
FROM Customer c
LEFT JOIN Orders o ON o.CustomerId = c.CustomerId
Ich muss meine Customer-Entität aus dem Abfrageergebnis füllen:
public class Customer
{
public string Name { get; set; }
public IEnumerable<int> OrderIds { get; set; }
}
Ich lese Daten mit SqlDataReader:
using(SqlDataReader rdr = cmd.ExecuteReader())
{
while (rdr.Read())
{
Customer c = new Customer();
c.Name = rdr["CustomerName"].ToString();
yield return c;
}
}
Frage: Was ist der einfachste und sauberste Weg zum Ausfüllen der OrderIds Eigenschaft ohne Verwendung eines ORM? Der linke Join führt dazu, dass die Abfrage mehrere Zeilen pro Kunde zurückgibt (weil jeder Kunde mehrere Aufträge hat), sodass das Lesen von Zeile für Zeile wie oben beschrieben nicht funktioniert. Gibt es eine Möglichkeit, diese Entität zu füllen und trotzdem die Rendite für eine verzögerte Ausführung zu verwenden?
W Wenn dies die Frage beantworten könnte, ist es immer gut zu erklären, wie Ihr Code dem OP hilft. –
Das beantwortet die Frage nicht - es umschließt nur die unformatierten Abfrageergebnisse in einem Datentypenobjekt, aber ich möchte die Ergebnisse einer Sammlung meiner "Kunden" -Objekte zuordnen. – BornToCode