Procedura dettagliata: aggiunta di dati di un database di SQL Server in un controllo DataGrid
Questa procedura dettagliata consente di recuperare dati da un database di SQL Server e di visualizzarli in un controllo DataGrid. Si utilizzano ADO.NET Entity Framework per creare le classi di identità che rappresentano i dati e LINQ per scrivere una query che recupera i dati specificati da una classe di identità.
Prerequisiti
Per completare la procedura dettagliata, è necessario disporre dei componenti seguenti:
Visual Studio 2010.
Istanza in esecuzione di SQL Server o SQL Server Express a cui è collegato il database di esempio AdventureWorksLT2008 e cui è possibile accedere. È possibile scaricare il database AdventureWorksLT2008 dal sito Web CodePlex (la pagina potrebbe essere in inglese).
Per creare le classi di entità
Creare un nuovo progetto di applicazione WPF in Visual Basic o C# e denominarlo DataGridSQLExample.
In Esplora soluzioni fare clic con il pulsante destro del mouse sul progetto, scegliere Aggiungi, quindi selezionare Nuovo elemento.
Verrà visualizzata la finestra di dialogo Aggiungi nuovo elemento.
Nel riquadro Modelli installati selezionare Dati, quindi selezionare ADO.NET Entity Data Model nell'elenco dei modelli.
Assegnare al file il nome AdventureWorksModel.edmx, quindi fare clic su Aggiungi.
Verrà visualizzata la procedura guidata Entity Data Model.
Nella schermata Scegli contenuto Model fare clic su Genera da database, quindi su Avanti.
Nella schermata Seleziona connessione dati specificare la connessione al database AdventureWorksLT2008. Per ulteriori informazioni, vedere Finestra di dialogo Scegliere la connessione dati.
Verificare che il nome sia AdventureWorksLT2008Entities e che l'opzione Salva impostazioni di connessione dell'entità in App.Config come sia selezionata, quindi fare clic su Avanti.
Nella schermata Seleziona oggetti di database espandere il nodo Tabelle e selezionare le tabelle Product e ProductCategory.
È possibile generare classi di identità per tutte le tabelle. In questo esempio verranno tuttavia recuperati i dati solo da queste due tabelle.
Fare clic su Fine.
Le entità Product e ProductCategory verranno visualizzate in Entity Designer.
Per recuperare e presentare i dati
Aprire il file MainWindow.xaml.
Nell'editor XAML aggiungere il seguente tag DataGrid tra i tag <Grid> e </Grid> per aggiungere un oggetto DataGrid denominato dataGrid1.
<DataGrid Name="dataGrid1" />
Selezionare Window.
Tramite la finestra Proprietà o l'editor XAML, creare un gestore eventi per l'oggetto Window denominato Window_Loaded per l'evento Loaded. Per ulteriori informazioni, vedere Procedura: creare un gestore eventi semplice.
Di seguito viene illustrato il codice XAML di MainWindow.xaml.
Nota Se si utilizza Visual Basic, nella prima riga di MainWindow.xaml sostituire x:Class="DataGridSQLExample.MainWindow" con 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>
Aprire il file code-behind (MainWindow.xaml.vb o MainWindow.xaml.cs) per Window.
Aggiungere il codice seguente per recuperare solo valori specifici dalle tabelle unite e impostare la proprietà ItemsSource dell'oggetto DataGrid sui risultati della query.
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(); } } }
Eseguire l'esempio.
Verrà visualizzato un oggetto DataGrid contenente i dati.
Vedere anche
Riferimenti
Altre risorse
Ricerca per categorie: introduzione a Entity Framework nelle applicazioni WPF