LINQ to SQL ermöglicht die Ermittlung der Daten aus einem SQL Server. Mit LINQ to SQL sind keine SQL-Anweisungen im Programmcode nötig, um die Daten aus der Datenbank ermitteln zu können. Die nötigen SQL-Anweisungen werden im Hintergrund generiert und die Daten werden mithilfe dieser Anweisungen aus der Datenbank ermittelt. Die aus der Datenbank ermittelte Daten stehen als Resultat der LINQ to SQL-Abfrage für die Weiterverwendung zur Verfügung.
Das Resultat der LINQ to SQL-Abfrage kann nicht direkt in ein DataSet-Objekt weitergegeben werden. LINQ bietet keine Methode für die Weitergabe vom Resultat einer LINQ-Abfrage in ein DataSet-Objekt. Die LoadDataRow-Methode der DataTable-Klasse kann für das Transferieren einer LINQ-Abfrage Resultates in ein DataTable-Objekt verwendet werden.
In dem folgenden Beispielcode wird gezeigt, wie die LoadDataRow-Methode das Resultat einer LINQ-Abfrage in ein DataTable-Objekt weitergibt.
private void btnLoadWithLinqToSql_Click(object sender, EventArgs e)
{
AdventureWorksDataContext db = new AdventureWorksDataContext();
var qry = from cr in db.CountryRegions
select cr;
this._AdventureWorksDS = new DataSet("AdventureWorks");
DataTable countryRegionDT = new DataTable("CountryRegion");
countryRegionDT.Columns.Add("CountryRegionCode", typeof(string));
countryRegionDT.Columns.Add("Name", typeof(string));
countryRegionDT.Columns.Add("ModifiedDate", typeof(DateTime));
foreach(var cr in qry)
{
countryRegionDT.LoadDataRow(new Object[] {cr.CountryRegionCode,
cr.Name,
cr.ModifiedDate}, true);
}
this._AdventureWorksDS.Tables.Add(countryRegionDT);
this.dgvLinqToSql.DataSource = this._AdventureWorksDS.Tables["CountryRegion"];
}
Die wichtigsten Zeilen im obigen Beispielcode sind die foreach-Schleife und der Aufruf der LoadDataRow-Methode. Mit der foreach-Schleife werden die einzelnen Entity-Objekten gelesen und mithilfe der LoadDataRow-Methode werden die einzelnen Eigenschaften dieser Objekte an das DataTable-Objekt weitergegeben.
foreach(var cr in qry)
{
countryRegionDT.LoadDataRow(new Object[] {cr.CountryRegionCode,
cr.Name,
cr.ModifiedDate}, true);
}
Wenn ein typisiertes DataSet verwendet wird, steht unter der DataTable-Klasse eine Methode zum Hinzufügen eines Row-Objektes zur Verfügung. In dem Beispiel wird die AddCountryRegion-Methode aufgerufen und die einzelnen Eigenschaften des Entity-Objekts übergeben:
AdventureWorksDataContext db = new AdventureWorksDataContext();
var qry = from cr in db.CountryRegions
select cr;
AdventureWorksTypedDS ds = new AdventureWorksTypedDS();
foreach (var cr in qry)
{
ds.CountryRegion.AddCountryRegionRow(cr.CountryRegionCode,
cr.Name,
cr.ModifiedDate);
}
this.dgvLinqToSql.DataSource = ds.CountryRegion;
No comments:
Post a Comment