Freigeben über


ObjectStateManager.GetObjectStateEntry Methode

Definition

Gibt für ein bestimmtes Objekt oder einen Beziehungseintrag einen ObjectStateEntry zurück.

Überlädt

GetObjectStateEntry(EntityKey)

Gibt für das Objekt oder den Beziehungseintrag mit dem angegebenen Schlüssel einen ObjectStateEntry zurück.

GetObjectStateEntry(Object)

Gibt einen ObjectStateEntry für das angegebene Objekt zurück.

GetObjectStateEntry(EntityKey)

Gibt für das Objekt oder den Beziehungseintrag mit dem angegebenen Schlüssel einen ObjectStateEntry zurück.

public:
 System::Data::Objects::ObjectStateEntry ^ GetObjectStateEntry(System::Data::EntityKey ^ key);
public System.Data.Objects.ObjectStateEntry GetObjectStateEntry (System.Data.EntityKey key);
member this.GetObjectStateEntry : System.Data.EntityKey -> System.Data.Objects.ObjectStateEntry
Public Function GetObjectStateEntry (key As EntityKey) As ObjectStateEntry

Parameter

key
EntityKey

Das EntityKey.

Gibt zurück

Der entsprechende ObjectStateEntry für das angegebene EntityKey.

Ausnahmen

Wenn keynull ist.

Wenn der angegebene key im Status-Manager nicht gefunden werden kann.

Es ist keine Entität mit dem angegebenen EntityKey im ObjectStateManager vorhanden.

Beispiele

In diesem Beispiel wird das ObjectStateEntry für das angegebene EntityKey von ObjectStateManagerabgerufen. Anschließend ruft sie den aktuellen Wert der SalesOrderHeader.PurchaseOrderNumber Eigenschaft ab, ändert den Wert der Eigenschaft und listet die Auflistung der geänderten Eigenschaften auf.

// Specify the order to update.
int orderId = 43680;

using (AdventureWorksEntities context =
    new AdventureWorksEntities())
{
    try
    {
        var order = (from o in context.SalesOrderHeaders
                     where o.SalesOrderID == orderId
                     select o).First();

        // Change the status of an existing order.
        order.Status = 1;

        // Delete the first item in the order.
        context.DeleteObject(order.SalesOrderDetails.First());

        // Create a new SalesOrderDetail object.
        // You can use the static CreateObjectName method (the Entity Framework
        // adds this method to the generated entity types) instead of the new operator:
        // SalesOrderDetail.CreateSalesOrderDetail(1, 0, 2, 750, 1, (decimal)2171.2942, 0, 0,
        //                                         Guid.NewGuid(), DateTime.Today));
        SalesOrderDetail detail = new SalesOrderDetail
        {
            SalesOrderID = 0,
            SalesOrderDetailID = 0,
            OrderQty = 2,
            ProductID = 750,
            SpecialOfferID = 1,
            UnitPrice = (decimal)2171.2942,
            UnitPriceDiscount = 0,
            LineTotal = 0,
            rowguid = Guid.NewGuid(),
            ModifiedDate = DateTime.Now
        };
        order.SalesOrderDetails.Add(detail);

        // Get the ObjectStateEntry for the order.
        ObjectStateEntry stateEntry =
            context.ObjectStateManager
            .GetObjectStateEntry(order);
        Console.WriteLine("State before SaveChanges() is called: {0}",
            stateEntry.State.ToString());

        // Save changes in the object context to the database.
        int changes = context.SaveChanges();

        Console.WriteLine("State after SaveChanges() is called: {0}",
            stateEntry.State.ToString());

        Console.WriteLine(changes.ToString() + " changes saved!");
        Console.WriteLine("Updated item for order ID: "
            + order.SalesOrderID.ToString());

        // Iterate through the collection of SalesOrderDetail items.
        foreach (SalesOrderDetail item in order.SalesOrderDetails)
        {
            Console.WriteLine("Item ID: "
                + item.SalesOrderDetailID.ToString() + "  Product: "
                + item.ProductID.ToString() + "  Quantity: "
                + item.OrderQty.ToString());
        }
    }
    catch (UpdateException ex)
    {
        Console.WriteLine(ex.ToString());
    }
}

Hinweise

Verwenden Sie die TryGetObjectStateEntry(EntityKey, ObjectStateEntry) -Methode, um ein ObjectStateEntry Objekt zurückzugeben, ohne das InvalidOperationException von der GetObjectStateEntry(EntityKey) -Methode ausgelöste verarbeiten zu müssen.

Gilt für:

GetObjectStateEntry(Object)

Gibt einen ObjectStateEntry für das angegebene Objekt zurück.

public:
 System::Data::Objects::ObjectStateEntry ^ GetObjectStateEntry(System::Object ^ entity);
public System.Data.Objects.ObjectStateEntry GetObjectStateEntry (object entity);
member this.GetObjectStateEntry : obj -> System.Data.Objects.ObjectStateEntry
Public Function GetObjectStateEntry (entity As Object) As ObjectStateEntry

Parameter

entity
Object

Das Object, zu dem der abgerufene ObjectStateEntry gehört.

Gibt zurück

Der entsprechende ObjectStateEntry für das angegebene Object.

Ausnahmen

Es ist keine Entität für das angegebenene Object im ObjectStateManager vorhanden.

Hinweise

Verwenden Sie die TryGetObjectStateEntry(Object, ObjectStateEntry) -Methode, um ein ObjectStateEntry Objekt zurückzugeben, ohne das InvalidOperationException von der GetObjectStateEntry(Object) -Methode ausgelöste verarbeiten zu müssen.

Gilt für: