Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In dieser exemplarischen Vorgehensweise rufen Sie Daten aus einer SQL Server-Datenbank ab und zeigen diese Daten in einem DataGrid-Steuerelement an. Mit dem ADO.NET Entity Framework erstellen Sie die Entitätsklassen, die die Daten darstellen, und verwenden SIE LINQ, um eine Abfrage zu schreiben, die die angegebenen Daten aus einer Entitätsklasse abruft.
Voraussetzungen
Sie benötigen die folgenden Komponenten, um diese Schritt-für-Schritt-Anleitung abzuschließen.
Visual Studio.
Zugriff auf eine ausgeführte Instanz von SQL Server oder SQL Server Express, die der AdventureWorks-Beispieldatenbank zugeordnet ist. Sie können die AdventureWorks-Datenbank von GitHub herunterladen.
Erstellen von Entitätsklassen
Erstellen Sie ein neues WPF-Anwendungsprojekt in Visual Basic oder C#, 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 Neues Element aus.
Das Dialogfeld "Neues Element hinzufügen" wird angezeigt.
Wählen Sie im Bereich „Installierte Vorlagen“ die Option Daten und in der Liste der Vorlagen ADO.NET Entity Data Model aus.
Nennen Sie die Datei
AdventureWorksModel.edmx
, und klicken Sie dann auf Hinzufügen.Der Entitätsdatenmodell-Assistent wird angezeigt.
Wählen Sie auf dem Bildschirm „Modellinhalt auswählen“ die Option EF-Designer aus Datenbank aus, und klicken Sie dann auf Weiter.
Geben Sie im Fenster 'Datenverbindung auswählen' die Verbindung zu Ihrer AdventureWorksLT2008-Datenbank an. Weitere Informationen finden Sie im Dialogfeld „Wählen Sie Ihre Datenverbindung aus“.
Stellen Sie sicher, dass der Name
AdventureWorksLT2008Entities
und das Kontrollkästchen Einstellungen Entitätsverbindung in App.Config speichern als ausgewählt ist, und klicken Sie dann auf Weiter.Erweitern Sie auf dem Bildschirm „Wählen Sie Ihre Datenbankobjekte aus“ 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 jedoch nur Daten aus diesen beiden Tabellen ab.
Klicken Sie auf Fertig stellen.
Die Entitäten "Product" und "ProductCategory" werden im Entitäts-Designer angezeigt.
Abrufen und Darstellen der Daten
Öffnen Sie die Datei "MainWindow.xaml".
Fügen Sie im XAML-Editor das folgende DataGrid-Tag zwischen den
<Grid>
- und</Grid>
-Tags hinzu, um eine DataGrid mit dem NamendataGrid1
hinzuzufügen.<DataGrid Name="dataGrid1" />
Wählen Sie Window aus.
Erstellen Sie mithilfe des Eigenschaftenfenster- oder XAML-Editors einen Ereignishandler für das Window mit dem Namen
Window_Loaded
für das Loaded-Ereignis. Weitere Informationen finden Sie unter Erstellen eines einfachen Ereignishandlers.Die folgende Abbildung zeigt den XAML-Code für "MainWindow.xaml".
Hinweis
Wenn Sie Visual Basic verwenden, ersetzen Sie in der ersten Zeile von "MainWindow.xaml"
x:Class="DataGridSQLExample.MainWindow"
durchx:Class="MainWindow"
.<Window x:Class="DataGridSQLExample.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://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 Window.
Fügen Sie den folgenden Code hinzu, um nur bestimmte Werte aus den verknüpften Tabellen abzurufen und die ItemsSource-Eigenschaft der DataGrid auf die Ergebnisse der Abfrage festzulegen.
using System.Data.Entity.Core.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) { var query = from product in dataEntities.Products where product.Color == "Red" orderby product.ListPrice select new { product.Name, product.Color, CategoryName = product.ProductCategory.Name, product.ListPrice }; dataGrid1.ItemsSource = query.ToList(); } } }
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
Führen Sie das Beispiel aus.
Sie sollten eine DataGrid-Klasse sehen, die Daten anzeigt.
Siehe auch
.NET Desktop feedback