Adventure Works Data Binding (Exemple d'application EDM)
L'exemple AdventureWorks Data Binding montre une liaison de données qui utilise Entity Framework. Le modèle de données est défini dans la rubrique Modèle de vente AdventureWorks Sales Model (EDM). Cette application affiche et modifie des entités SalesOrderDetail associées à des entités SalesOrderHeader. L'illustration suivante montre la boîte de dialogue utilisée pour ajouter une entité SalesOrderDetail à un SalesOrderHeader et, en arrière-plan, le formulaire d'application principal.
Liaison de données dans Entity Framework
La liaison de données d'un objet ObjectQuery à un contrôle DataGridView sur un Windows Form peut être réalisée avec quelques lignes de code. Commencez par créer l'objet ObjectQuery. Assignez ensuite l'objet ObjectQuery à la propriété DataSource du DataGridView.
Le code suivant assigne un SalesOrderHeader unique de l'objet ObjectQuery fourni par les AdventureWorksSalesEntitiesObjectContext à un contrôle DataGridView. Le paramètre de la requête est créé en analysant le numéro ID
du SalesOrderHeader d'une zone de texte. Ce paramètre est utilisé dans une clause where
de la requête pour sélectionner un SalesOrderHeader unique qui correspond au numéro d'ID. La requête est assignée à la propriété DataSource du contrôle DataGridView. Dans l'illustration ci-dessus, le premier contrôle DataGridView du Windows Form portant l'étiquette Sales Order Header est rempli avec des données par le segment de code suivant. L'utilisation de la méthode Execute
garantit une seule exécution de la requête.
ObjectParameter parameter =
new ObjectParameter("p", Int32.Parse(textBoxOrderId.Text));
dataGridViewSOHeader.DataSource =
objCtx.SalesOrderHeader.Where(
"it.SalesOrderID == @p",
parameter).Execute(MergeOption.OverwriteChanges);
Dans l'illustration ci-dessus, le contrôle DataGridView portant l'étiquette Sales Order Details est rempli avec des données par le segment de code suivant. SalesOrderHeader contient une collection d'entités SalesOrderDetail associées identifiées par la propriété SalesOrderDetail du SalesOrderHeader. La propriété SalesOrderDetail est en fait un objet EntityCollection. Cette collection peut être assignée à la propriété DataSource d'un contrôle BindingSource. Le BindingSource est ensuite assigné à la propriété DataSource d'un contrôle DateGridView.
if(objCtx.SalesOrderHeader.Where(
"it.SalesOrderID == @p", parameter).Any())
{
SalesOrderHeader resultHeader =
objCtx.SalesOrderHeader.Where(
"it.SalesOrderID == @p", parameter).First();
resultHeader.SalesOrderDetail.Load();
dataGridViewOrderDetails.DataSource =
resultHeader.SalesOrderDetail;
}
Modifications des scénarios de liaison de données
En cas de modification de l'une des entités SalesOrderDetail affichées dans la grille de données Sales Order Detail, le SalesOrderHeader lié aux données doit être mis à jour une fois les nouvelles données enregistrées sur le support de stockage. Cette mise à jour est effectuée dans un gestionnaire de modification de cellule selon la séquence de code suivante.
Les modifications de la cellule sont tout d'abord enregistrées sur le support de stockage par la méthode SaveChanges du ObjectContext. Ensuite, un ObjectQuery récupère l'entité SalesOrderHeader. Enfin, la méthode Refresh du ObjectContext met à jour les données liées au DataGridControl. Notez que le paramètre RefreshMode.StoreWins de la méthode Refresh, qui spécifie les données du support de stockage, remplace les données du ObjectContext.
objCtx.SaveChanges();
ObjectParameter parameter =
new ObjectParameter("p", Int32.Parse(textBox1.Text));
SalesOrderHeader header =
objCtx.SalesOrderHeader.Where(
"it.SalesOrderID == @p", parameter).FirstOrDefault();
// Refresh the SalesOrderHeader in the grid.
objCtx.Refresh(RefreshMode.StoreWins, header);
Les scénarios de code de cette rubrique représentent les fonctionnalités principales de la liaison de données Entity Framework utilisées dans l'exemple d'application de liaison de données AdventureWorks Data Binding. Le code complet est présenté dans les rubriques Code de l'exemple d'application AdventureWorks Data Binding (Exemple d'application EDM) et Exemple Ajout du formulaire SalesOrderDetail dans Adventure Works Data Binding (Exemple d'application EDM).
Voir aussi
Concepts
Modèle de vente AdventureWorks Sales Model (EDM)
Code de l'exemple d'application AdventureWorks Data Binding (Exemple d'application EDM)
Exemple Ajout du formulaire SalesOrderDetail dans Adventure Works Data Binding (Exemple d'application EDM)