Procédure : ajouter, modifier et supprimer des objets (Entity Framework)
Cette rubrique fournit un exemple d'utilisation d'Object Services pour modifier des objets dans un contexte d'objet et enregistrer les données dans la base de données. L'exemple de cette rubrique est basé sur le modèle de vente Adventure Works Sales Model. Pour exécuter le code de cet exemple, vous devez déjà avoir ajouté le modèle de vente AdventureWorks Sales Model à votre projet et configuré ce dernier pour qu'il utilise Entity Framework. Pour ce faire, exécutez les procédures décrites dans Procédure : configurer manuellement un projet Entity Framework et Procédure : définir manuellement un modèle EDM (Entity Data Model) (Entity Framework).
Exemple
Dans cet exemple, une requête d'objet retourne un seul objet SalesOrderHeader sur la base d'un SalesOrderID spécifié. Le statut de cette commande passe de 5 (expédié) à 1 (en cours), un nouvel article est ajouté à la commande et le premier article existant est supprimé. La méthode SaveChanges est appelée pour écrire les modifications dans la base de données. Le nouvel état de la commande est ensuite écrit dans la console.
' Specify the order to update.
Dim orderId As Integer = 43680
Using context As New AdventureWorksEntities()
Try
Dim order As SalesOrderHeader = _
context.SalesOrderHeader.Where( _
"it.SalesOrderID = @id", New ObjectParameter( _
"id", orderId)).First()
' Change the status and ship date of an existing order.
order.Status = 1
order.ShipDate = DateAndTime.Today
' Load items for the order, if not already loaded.
If Not order.SalesOrderDetail.IsLoaded Then
order.SalesOrderDetail.Load()
End If
' Delete the first item in the order.
context.DeleteObject(order.SalesOrderDetail.First())
' Create a new item using the static Create method
' and add it to the order.
order.SalesOrderDetail.Add( _
SalesOrderDetail.CreateSalesOrderDetail( _
1, 0, 2, 750, 1, CDec(2171.2942), 0, 0, Guid.NewGuid(), _
DateAndTime.Today))
' Save changes in the object context to the database.
Dim changes As Integer = context.SaveChanges()
Console.WriteLine(changes.ToString() + " changes saved!")
Console.WriteLine("Updated item for order: " _
+ order.SalesOrderID.ToString())
Dim item As SalesOrderDetail
For Each item In order.SalesOrderDetail
Console.WriteLine("Item ID: " _
+ item.SalesOrderDetailID.ToString() + " Product: " _
+ item.ProductID.ToString() + " Quantity: " + item.OrderQty.ToString())
Next
Catch ex As UpdateException
Console.WriteLine(ex.ToString())
End Try
End Using
// Specify the order to update.
int orderId = 43680;
using (AdventureWorksEntities context =
new AdventureWorksEntities())
{
try
{
SalesOrderHeader order =
context.SalesOrderHeader.Where
("it.SalesOrderID = @id", new ObjectParameter(
"id", orderId)).First();
// Change the status and ship date of an existing order.
order.Status = 1;
order.ShipDate = DateTime.Today;
// Load items for the order, if not already loaded.
if (!order.SalesOrderDetail.IsLoaded)
{
order.SalesOrderDetail.Load();
}
// Delete the first item in the order.
context.DeleteObject(order.SalesOrderDetail.First());
// Create a new item using the static Create method
// and add it to the order.
order.SalesOrderDetail.Add(
SalesOrderDetail.CreateSalesOrderDetail(0,
0, 2, 750, 1, (decimal)2171.2942, 0, 0,
Guid.NewGuid(), DateTime.Today));
// Save changes in the object context to the database.
int changes = context.SaveChanges();
Console.WriteLine(changes.ToString() + " changes saved!");
Console.WriteLine("Updated item for order: "
+ order.SalesOrderID.ToString());
foreach (SalesOrderDetail item in order.SalesOrderDetail)
{
Console.WriteLine("Item ID: "
+ item.SalesOrderDetailID.ToString() + " Product: "
+ item.ProductID.ToString() + " Quantity: "
+ item.OrderQty.ToString());
}
}
catch (UpdateException ex)
{
Console.WriteLine(ex.ToString());
}
}
Voir aussi
Concepts
Ajout, modification et suppression d'objets (Entity Framework)
Vue d'ensemble d'Object Services (Entity Framework)