Freigeben über


ObjectStateManager Klasse

Definition

Verwaltet den Objektstatus und die 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 Status-Manager abgerufen ObjectContext und verwendet, um im Kontext auf ein Objekt zuzugreifen.

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 die zurückgegebene ObjectStateManager Methode verwendet, um ein Objekt basierend auf seinem Entitätsschlüssel 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. Sie führt auch die Nachverfolgung von Änderungen im Arbeitsspeicher durch, wenn ein Benutzer Objekte einfügt, löscht oder ändert und den Änderungssatz für Aktualisierungen bereitstellt. Dieser Änderungssatz wird vom Änderungsprozessor verwendet, um Änderungen beizubehalten.

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

Konstruktoren

Name Beschreibung
ObjectStateManager(MetadataWorkspace)

Initialisiert eine neue Instanz der ObjectStateManager-Klasse.

Eigenschaften

Name Beschreibung
MetadataWorkspace

Ruft den MetadataWorkspace diesem Status-Manager zugeordneten ab.

Methoden

Name Beschreibung
ChangeObjectState(Object, EntityState)

Ändert den ObjectStateEntry Status des für ein bestimmtes Objekt in das angegebene entityStateObjekt.

ChangeRelationshipState(Object, Object, String, EntityState)

Ändert den Status der Beziehung zwischen zwei Entitätsobjekten, die basierend auf den beiden verwandten Objekten und dem Namen der Navigationseigenschaft angegeben werden.

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

Ändert den Status der Beziehung zwischen zwei Entitätsobjekten, die basierend auf den beiden verknüpften Objekten und den Eigenschaften der Beziehung angegeben werden.

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

Ändert den Status der Beziehung zwischen zwei Entitätsobjekten, die basierend auf den beiden verwandten Objekten angegeben werden, und einem LINQ-Ausdruck, der die Navigationseigenschaft definiert.

Equals(Object)

Bestimmt, ob das angegebene Objekt dem aktuellen Objekt entspricht.

(Geerbt von Object)
GetHashCode()

Dient als Standardhashfunktion.

(Geerbt von Object)
GetObjectStateEntries(EntityState)

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

GetObjectStateEntry(EntityKey)

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

GetObjectStateEntry(Object)

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

GetRelationshipManager(Object)

Gibt das RelationshipManager vom angegebenen Objekt verwendete Objekt zurück.

GetType()

Ruft die Type der aktuellen Instanz ab.

(Geerbt von Object)
MemberwiseClone()

Erstellt eine flache Kopie der aktuellen Object.

(Geerbt von Object)
ToString()

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

(Geerbt von Object)
TryGetObjectStateEntry(EntityKey, ObjectStateEntry)

Versucht, das entsprechende ObjectStateEntry Objekt oder die beziehungsweise die angegebene EntityKeyBeziehung abzurufen.

TryGetObjectStateEntry(Object, ObjectStateEntry)

Versucht, das entsprechende ObjectStateEntry für die angegebene Object.

TryGetRelationshipManager(Object, RelationshipManager)

Gibt das RelationshipManager vom angegebenen Objekt verwendete Objekt zurück.

Ereignisse

Name Beschreibung
ObjectStateManagerChanged

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

Gilt für: