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)