2010-06-25 7 views
7

Ich bin neu in C# und dies kann am Ende eine dumme Frage sein, aber ich muss trotzdem fragen.Deserialisieren Sie eine Datenbanktabellenzeile direkt in ein C# -Objekt - gibt es dafür einen Mechanismus?

Gibt es einen Mechanismus mit C# zum Deserialisieren eines Ergebnisses aus einer ausgeführten SQL-Anweisung in ein C# -Objekt?

Ich habe ein C# -Programm, das eine Tabelle von einem SQL-Server liest die Zeile in einem Objekt - ich bin die Zuordnung jeder Spalte Wert zu einem Objekt Mitglied manuell, so dass ich mich fragte, ob es eine Möglichkeit ist, die Zeile automatisch in serialisieren ein Objekt. Oder noch besser, eine ganze Tabelle in einer Sammlung von Objekten des gleichen Typs.

Meine Umgebung ist C#, VS2010, .NET4, SQLServer2008. Die Annahme ist, dass ich die Spalten kenne, die ich brauche, es ist keine Select * -Abfrage.

Ein Link zu einem ordentlichen Beispiel wird ebenfalls geschätzt.

Danke.

Antwort

4

Wenn die Spalten nach den Tabellennamen genannt, können Sie dies mit LINQ-to-SQL tun, ohne jede Code-Mapping - nur ExecuteQuery mit:

using(var dc = new DataContext(connectionString)) { 
    var objects = dc.ExecuteQuery<YourType>(sql); // now iterate object 
} 

Zusätzlich kann die SQL automatisch parametriert werden string.Format Regeln:

class Person { 
    public int Id {get;set;} 
    public string Name {get;set;} 
    public string Address {get;set;} 
} 
using(var dc = new DataContext(connectionString)) { 
    List<Person> people = dc.ExecuteQuery(@" 
      SELECT Id, Name Address 
      FROM [People] 
      WHERE [Name] = {0}", name).ToList(); // some LINQ too 

} 

natürlich können Sie auch die VS-Tools verwenden, um einen typisierten Daten Kontext zu schaffen, so dass Dinge wie:

using(var dc = new SpecificDataContext(connectionString)) { 
    List<Person> people = 
     (from person in dc.People 
      where person.Name == name 
      select person).ToList(); 
} 
+0

Alle Kommentare verschwanden und anscheinend habe ich dies als die richtige Antwort markiert, was ist hier passiert? – Alan

6

Sie könnten dazu einen ORM verwenden. ADO.NET Entity Framework (zur Kasse video tutorials) und NHibernate sind beliebte Wahl.

+3

+1, sowie LINQ to SQL und eine beliebige Anzahl von anderen ORMs –

+0

LINQ to Entities soll sowohl ADO.NET Entity Framework und LINQ to SQL ersetzen. Siehe http://msdn.microsoft.com/en-us/library/bb386964.aspx –

Verwandte Themen