Exemplarische Vorgehensweise: Anzeigen von Daten aus einer SQL Server-Datenbank in einem DataGrid-Steuerelement
In dieser exemplarischen Vorgehensweise rufen Sie Daten aus einer SQL Server-Datenbank ab und zeigen diese Daten in einem DataGrid-Steuerelement an. Sie erstellen die Entitätsklassen, die die Daten darstellen, mit dem ADO.NET Entity Framework und verwenden LINQ, um eine Abfrage zu schreiben, die die angegebenen Daten aus einer Entitätsklasse abruft.
Vorbereitungsmaßnahmen
Zum Durchführen dieser exemplarischen Vorgehensweise benötigen Sie die folgenden Komponenten:
Visual Studio 2010.
Zugriff auf eine gegenwärtig ausgeführte Instanz von SQL Server oder SQL Server Express, die mit der AdventureWorksLT2008-Beispieldatenbank verknüpft ist. Sie können die AdventureWorksLT2008-Datenbank von der CodePlex-Website herunterladen.
So erstellen Sie Entitätsklassen
Erstellen Sie in Visual Basic oder C# ein neues WPF-Projekt, und nennen Sie es DataGridSQLExample.
Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Projekt, zeigen Sie auf Hinzufügen, und wählen Sie anschließend Neues Element aus.
Das Dialogfeld "Neues Element hinzufügen" wird angezeigt.
Wählen Sie im Bereich für die installierten Vorlagen die Option Daten, und wählen Sie in der Vorlagenliste ADO.NET Entity Data Model aus.
Nennen Sie die Datei AdventureWorksModel.edmx, und klicken Sie anschließend auf Hinzufügen.
Der Assistent für Entity Data Model wird angezeigt.
Wählen Sie im Bildschirm Modellinhalt auswählen Aus Datenbank generieren aus, und klicken Sie anschließend auf Weiter.
Stellen Sie auf dem Bildschirm Wählen Sie Ihre Datenverbindung aus die Verbindung für die AdventureWorksLT2008-Datenbank bereit. Weitere Informationen finden Sie unter Dialogfeld "Wählen Sie Ihre Datenverbindung aus".
Stellen Sie sicher, dass der Name AdventureWorksLT2008Entities lautet und dass das Kontrollkästchen Speichern Sie die Entitätsverbindungseinstellungen in App.Config als aktiviert ist, und klicken Sie anschließend auf Weiter.
Erweitern Sie auf dem Bildschirm Datenbankobjekte auswählen den Knoten Tabellen, und wählen Sie die Tabellen Product und ProductCategory aus.
Sie können Entitätsklassen für alle Tabellen generieren; in diesem Beispiel rufen Sie nur jedoch Daten aus diesen zwei Tabellen ab.
Klicken Sie auf Fertig stellen.
Die Product-Entität und die ProductCategory-Entität werden im Entity Designer angezeigt.
So rufen Sie die Daten ab und präsentieren sie
Öffnen Sie die Datei "MainWindow.xaml".
Fügen Sie im XAML-Editor das DataGrid-Tag zwischen das <Grid>-Tag und das </Grid>-Tag ein, um ein DataGrid-Element mit der Bezeichnung dataGrid1 hinzuzufügen.
<DataGrid Name="dataGrid1" />
Wählen Sie das Window-Steuerelement aus.
Erstellen Sie im Eigenschaftenfenster oder mit dem XAML-Editor einen Ereignishandler für das Window-Element mit der Bezeichnung Window_Loaded für das Loaded-Ereignis. Weitere Informationen finden Sie unter Gewusst wie: Erstellen eines einfachen Ereignishandlers.
Im Folgenden wird die XAML für "MainWindow.xaml" dargestellt.
Hinweis Ersetzen Sie bei Verwendung von Visual Basic in der ersten Zeile von "MainWindow.xaml" den x:Class="DataGridSQLExample.MainWindow"-Code durch x:Class="MainWindow".
<Window x:Class="DataGridSQLExample.MainWindow" xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="350" Width="450" Loaded="Window_Loaded"> <Grid> <DataGrid Name="dataGrid1" /> </Grid> </Window>
Öffnen Sie die CodeBehind-Datei (MainWindow.xaml.vb oder MainWindow.xaml.cs) für das Window-Element.
Fügen Sie den folgenden Code hinzu, um nur bestimmte Werte aus den verknüpften Tabellen abzurufen und die ItemsSource-Eigenschaft vom DataGrid auf die Ergebnisse der Abfrage festzulegen.
Imports System.Data.Objects Class MainWindow Dim dataEntities As AdventureWorksLT2008Entities = New AdventureWorksLT2008Entities Private Sub Window_Loaded(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles MyBase.Loaded Dim products As ObjectQuery(Of Product) = dataEntities.Products Dim query = _ From product In products _ Where product.Color = "Red" _ Order By product.ListPrice _ Select product.Name, product.Color, CategoryName = product.ProductCategory.Name, product.ListPrice dataGrid1.ItemsSource = query.ToList() End Sub End Class
using System.Data.Objects; using System.Linq; using System.Windows; namespace DataGridSQLExample { /// <summary> /// Interaction logic for MainWindow.xaml /// </summary> public partial class MainWindow : Window { AdventureWorksLT2008Entities dataEntities = new AdventureWorksLT2008Entities(); public MainWindow() { InitializeComponent(); } private void Window_Loaded(object sender, RoutedEventArgs e) { ObjectQuery<Product> products = dataEntities.Products; var query = from product in products where product.Color == "Red" orderby product.ListPrice select new { product.Name, product.Color, CategoryName = product.ProductCategory.Name, product.ListPrice }; dataGrid1.ItemsSource = query.ToList(); } } }
Führen Sie das Beispiel aus.
Jetzt sollte ein DataGrid-Element mit Daten angezeigt werden.
Siehe auch
Referenz
Weitere Ressourcen
Gewusst wie: Erste Schritte mit Entity Framework in WPF-Anwendungen