Freigeben über


ObjectStateManager.TryGetObjectStateEntry Methode

Definition

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

Überlädt

TryGetObjectStateEntry(EntityKey, ObjectStateEntry)

Ruft den entsprechenden ObjectStateEntry für das Objekt oder die Beziehung mit dem angegebenen EntityKey ab.

TryGetObjectStateEntry(Object, ObjectStateEntry)

Ruft den entsprechenden ObjectStateEntry für das angegebene Object ab.

TryGetObjectStateEntry(EntityKey, ObjectStateEntry)

Ruft den entsprechenden ObjectStateEntry für das Objekt oder die Beziehung mit dem angegebenen EntityKey ab.

public:
 bool TryGetObjectStateEntry(System::Data::EntityKey ^ key, [Runtime::InteropServices::Out] System::Data::Objects::ObjectStateEntry ^ % entry);
public bool TryGetObjectStateEntry (System.Data.EntityKey key, out System.Data.Objects.ObjectStateEntry entry);
member this.TryGetObjectStateEntry : System.Data.EntityKey * ObjectStateEntry -> bool
Public Function TryGetObjectStateEntry (key As EntityKey, ByRef entry As ObjectStateEntry) As Boolean

Parameter

key
EntityKey

Der angegebene EntityKey.

entry
ObjectStateEntry

Enthält einen ObjectStateEntry für den angegebenen EntityKey, wenn diese Methode erfolgreich zurückkehrt. Dieser Parameter wird nicht initialisiert übergeben.

Gibt zurück

Ein boolescher Wert. Dieser ist true, wenn ein entsprechender ObjectStateEntry für den angegebenen EntityKey vorhanden ist, andernfalls false.

Ausnahmen

Ein null-Wert (Nothing in Visual Basic) wird für key bereitgestellt.

Beispiele

Im folgenden Beispiel wird versucht, den entsprechenden ObjectStateEntry für den angegebenen EntityKeyabzurufen.

int orderId = 43680;

using (AdventureWorksEntities context =
    new AdventureWorksEntities())
{
    ObjectStateManager objectStateManager = context.ObjectStateManager;
    ObjectStateEntry stateEntry = null;

    var order = (from o in context.SalesOrderHeaders
                 where o.SalesOrderID == orderId
                 select o).First();

    // Attempts to retrieve ObjectStateEntry for the given EntityKey.
    bool isPresent = objectStateManager.TryGetObjectStateEntry(((IEntityWithKey)order).EntityKey, out stateEntry);
    if (isPresent)
    {
        Console.WriteLine("The entity was found");
    }
}

Im folgenden Beispiel wird die TryGetObjectStateEntry(EntityKey, ObjectStateEntry)-Methode für den zurückgegebenen ObjectStateManager verwendet, um ein Objekt auf Grundlage des zugehörigen Entitätsschlüssels abzurufen.

private static void ApplyItemUpdates(SalesOrderDetail originalItem,
    SalesOrderDetail updatedItem)
{
    using (AdventureWorksEntities context =
        new AdventureWorksEntities())
    {
        context.SalesOrderDetails.Attach(updatedItem);
        // Check if the ID is 0, if it is the item is new.
        // In this case we need to chage the state to Added.
        if (updatedItem.SalesOrderDetailID == 0)
        {
            // Because the ID is generated by the database we do not need to
            // set updatedItem.SalesOrderDetailID.
            context.ObjectStateManager.ChangeObjectState(updatedItem, System.Data.EntityState.Added);
        }
        else
        {
            // If the SalesOrderDetailID is not 0, then the item is not new
            // and needs to be updated. Because we already added the
            // updated object to the context we need to apply the original values.
            // If we attached originalItem to the context
            // we would need to apply the current values:
            // context.ApplyCurrentValues("SalesOrderDetails", updatedItem);
            // Applying current or original values, changes the state
            // of the attached object to Modified.
            context.ApplyOriginalValues("SalesOrderDetails", originalItem);
        }
        context.SaveChanges();
    }
}

Hinweise

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

Gilt für:

TryGetObjectStateEntry(Object, ObjectStateEntry)

Ruft den entsprechenden ObjectStateEntry für das angegebene Object ab.

public:
 bool TryGetObjectStateEntry(System::Object ^ entity, [Runtime::InteropServices::Out] System::Data::Objects::ObjectStateEntry ^ % entry);
public bool TryGetObjectStateEntry (object entity, out System.Data.Objects.ObjectStateEntry entry);
member this.TryGetObjectStateEntry : obj * ObjectStateEntry -> bool
Public Function TryGetObjectStateEntry (entity As Object, ByRef entry As ObjectStateEntry) As Boolean

Parameter

entity
Object

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

entry
ObjectStateEntry

Enthält den ObjectStateEntry für den angegebenen EntityKey, wenn diese Methode erfolgreich zurückkehrt. Dieser Parameter wird nicht initialisiert übergeben.

Gibt zurück

Ein boolescher Wert. Dieser ist true, wenn ein entsprechender ObjectStateEntry für das angegebene Objekt vorhanden ist, andernfalls false.

Hinweise

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

Gilt für: