Gewusst wie: Ausführen von Geschäftslogik, wenn sich der Objektzustand ändert

Dieses Thema zeigt, wie Geschäftslogik ausgeführt wird, wenn eine Entität den Zustand innerhalb des Objektkontexts ändert. Im folgenden Beispiel wird gezeigt, wie das ObjectStateManagerChanged-Ereignis behandelt wird, das auftritt, wenn Entitäten den Kontext durch den Aufruf von Methoden zum Löschen oder Trennen verlassen oder durch Abfragen oder den Aufruf von Methoden zum Hinzufügen oder Anfügen in einen Kontext eingefügt werden.

Das Beispiel in diesem Thema beruht auf dem Adventure Works Sales-Modell. Zum Ausführen des Codes in diesem Thema muss dem Projekt bereits das Adventure Works Sales-Modell hinzugefügt und das Projekt zur Verwendung von Entity Framework konfiguriert worden sein. Weitere Informationen finden Sie unter Gewusst wie: Verwenden des Assistenten für Entity Data Model (Entity Framework) bzw. Gewusst wie: Manuelles Konfigurieren eines Entity Framework-Projekts und Gewusst wie: Manuelles Definieren eines Entity Data Model (Entity Framework).

Beispiel

Im folgenden Beispiel wird veranschaulicht, wie das ObjectStateManagerChanged-Ereignis registriert wird. Dieses Ereignis wird ausgelöst, wenn ein Objekt in den Kontext eingefügt wird oder diesen verlässt. In diesem Beispiel wird eine anonyme Methode an den Delegaten übergeben. Stattdessen können Sie auch die Ereignisbehandlungsmethode definieren und dann deren Namen an den Delegaten übergeben. Die anonyme Methode zeigt den Status des Objekts immer dann an, wenn das Ereignis ausgelöst wird.

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

Siehe auch

Aufgaben

Gewusst wie: Ausführen von Geschäftslogik im Verlauf von Skalareigenschaftsänderungen (Entity Framework)
Gewusst wie: Ausführen von Geschäftslogik im Verlauf von Zuordnungsänderungen
Gewusst wie: Ausführen von Geschäftslogik beim Speichern von Änderungen (Entity Framework)