Partager via


Procédure : exécuter la logique métier lors du changement d'état d'un objet

Cette rubrique montre comment exécuter la logique métier lorsqu'une entité change d'état dans le contexte de l'objet. L'exemple suivant montre comment gérer l'événement ObjectStateManagerChanged, qui se produit lorsque des entités quittent le contexte via des méthodes de suppression ou de détachement ou qu'elles entrent dans le contexte par le biais de requêtes ou de méthodes d'ajout et d'attachement.

L'exemple de cette rubrique est basé sur le modèle de vente Adventure Works Sales Model. Pour exécuter le code de cette rubrique, vous devez déjà avoir ajouté le modèle de vente AdventureWorks à votre projet et configuré ce dernier pour qu'il utilise Entity Framework. Pour plus d'informations, consultez Procédure : utiliser l'Assistant EDM (Entity Framework) ou Procédure : configurer manuellement un projet Entity Framework et Procédure : définir manuellement un modèle EDM (Entity Data Model) (Entity Framework).

Exemple

L'exemple suivant montre comment s'inscrire pour l'événement ObjectStateManagerChanged. Cet événement se produit lorsqu'un objet entre dans le contexte ou le quitte. Dans cet exemple, une méthode anonyme est transmise au délégué. Vous pouvez également définir la méthode de gestion des événements, puis transmettre son nom au délégué. La méthode anonyme affiche l'état de l'objet chaque fois que l'événement est déclenché.

int productID = 3;
string productName = "Flat Washer 10";
string productNumber = "FW-5600";
Int16 safetyStockLevel = 1000;
Int16 reorderPoint = 750;

using (AdventureWorksEntities context =
    new AdventureWorksEntities())
{
    // The ObjectStateManagerChanged event is raised whenever 
    // an entity leaves or enters the context. 
    context.ObjectStateManager.ObjectStateManagerChanged += (sender, e) =>
    {
        Console.WriteLine(string.Format(
        "ObjectStateManager.ObjectStateManagerChanged | Action:{0} Object:{1}"
        , e.Action
        , e.Element));
    };


    // When an entity is queried for we get an added event.
    var product =
            (from p in context.Products
             where p.ProductID == productID
             select p).First();

    // Create a new Product.
    Product newProduct = Product.CreateProduct(0,
        productName, productNumber, false, false, safetyStockLevel, reorderPoint,
        0, 0, 0, DateTime.Today, Guid.NewGuid(), DateTime.Today);

    // Add the new object to the context.
    // When an entity is added we also get an added event.
    context.Products.AddObject(newProduct);

    // Delete the object from the context.
    //Deleting an entity raises a removed event.
    context.Products.DeleteObject(newProduct);
}

Voir aussi

Tâches

Procédure : exécuter la logique métier lors de la modification des propriétés scalaires (Entity Framework)
Procédure : exécuter la logique métier lors de la modification des associations
Procédure : exécuter la logique métier lors de l'enregistrement de modifications (Entity Framework)