Procedura: eseguire la logica di business al momento della modifica dello stato dell'oggetto (Entity Framework)

In questo argomento viene illustrato come eseguire la logica di business quando lo stato di un'entità viene modificato all'interno del contesto dell'oggetto. Nell'esempio seguente viene illustrato come gestire l'evento ObjectStateManagerChanged che si verifica quando le entità lasciano il contesto tramite i metodi di eliminazione o scollegamento o immettono il contesto tramite query o i metodi di aggiunta e collegamento.

L'esempio incluso in questo argomento è basato sul modello Sales di AdventureWorks. Per eseguire il codice incluso in questo argomento, è necessario avere già aggiunto il modello Sales di AdventureWorks al progetto e avere configurato il progetto per l'utilizzo di Entity Framework. Per ulteriori informazioni, vedere Procedura: utilizzare la Procedura guidata Entity Data Model (Entity Framework) o Procedura: configurare manualmente un progetto di Entity Framework e Procedura: definire manualmente un modello EDM (Entity Framework).

Esempio

Nell'esempio riportato di seguito viene illustrato come registrare l'evento ObjectStateManagerChanged che si verifica quando un oggetto viene immesso nel contesto o abbandona quest'ultimo. In questo esempio un metodo anonimo viene passato al delegato. In alternativa, è possibile definire il metodo di gestione dell'evento e passare il relativo nome al delegato. Il metodo anonimo consente di visualizzare lo stato dell'oggetto ogni qualvolta l'evento viene generato.

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);
}

Vedere anche

Attività

Procedura: eseguire la logica di business quando vengono modificate le proprietà scalari (Entity Framework)
Procedura: eseguire la logica di business quando vengono modificate le associazioni
Procedura: eseguire la logica di business al momento del salvataggio delle modifiche (Entity Framework)