Freigeben über


ObjectStateManager Klasse

Definition

Speichert Objektstatus und Identitätsverwaltung für Entitätstypinstanzen und Beziehungsinstanzen.

public ref class ObjectStateManager
public class ObjectStateManager
type ObjectStateManager = class
Public Class ObjectStateManager
Vererbung
ObjectStateManager

Beispiele

Im folgenden Beispiel wird der ObjectStateManager aus dem ObjectContext abgerufen und für den Zugriff auf ein Objekt im Kontext verwendet.

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

ObjectStateManager verfolgt Abfrageergebnisse und stellt Logik zum Zusammenführen mehrerer überlappender Abfrageergebnisse bereit. Weiterhin führt es eine speicherinterne Änderungsnachverfolgung durch, wenn ein Benutzer Objekte einfügt, löscht oder ändert, und es stellt das Changeset für Aktualisierungen bereit. Dieses Changeset wird vom Änderungsprozessor verwendet, um Änderungen persistent zu speichern.

Diese Klasse wird in der Regel von ObjectContext und nicht direkt in Anwendungen verwendet.

Konstruktoren

ObjectStateManager(MetadataWorkspace)

Initialisiert eine neue Instanz der ObjectStateManager-Klasse.

Eigenschaften

MetadataWorkspace

Ruft den MetadataWorkspace ab, der diesem Status-Manager zugeordnet ist.

Methoden

ChangeObjectState(Object, EntityState)

Ändert den Zustand des ObjectStateEntry für ein bestimmtes Objekt in den angegebenen entityState.

ChangeRelationshipState(Object, Object, String, EntityState)

Ändert den Zustand der Beziehung zwischen zwei Entitätsobjekten, der auf Grundlage der beiden verknüpften Objekte und des Namens der Navigationseigenschaft angegeben wird.

ChangeRelationshipState(Object, Object, String, String, EntityState)

Ändert den Zustand der Beziehung zwischen zwei Entitätsobjekten, der auf Grundlage der beiden verknüpften Objekte und der Eigenschaften der Beziehung angegeben wird.

ChangeRelationshipState<TEntity>(TEntity, Object, Expression<Func<TEntity,Object>>, EntityState)

Ändert den Zustand der Beziehung zwischen zwei Entitätsobjekten, der auf Grundlage der beiden verknüpften Objekte und eines LINQ-Ausdrucks, der die Navigationseigenschaft definiert, angegeben wird.

Equals(Object)

Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist.

(Geerbt von Object)
GetHashCode()

Fungiert als Standardhashfunktion.

(Geerbt von Object)
GetObjectStateEntries(EntityState)

Gibt für Objekte oder Beziehungen mit dem angegebenen Status eine Auflistung von ObjectStateEntry-Objekten zurück.

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.

GetRelationshipManager(Object)

Gibt den RelationshipManager zurück, der vom angegebenen Objekt verwendet wird.

GetType()

Ruft den Type der aktuellen Instanz ab.

(Geerbt von Object)
MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.

(Geerbt von Object)
ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.

(Geerbt von Object)
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.

TryGetRelationshipManager(Object, RelationshipManager)

Gibt den RelationshipManager zurück, der vom angegebenen Objekt verwendet wird.

Ereignisse

ObjectStateManagerChanged

Tritt auf, wenn Entitäten dem Status-Manager hinzugefügt oder aus diesem entfernt werden.

Gilt für: