Udostępnij za pośrednictwem


ObjectStateManager Klasa

Definicja

Obsługuje zarządzanie stanem obiektów i tożsamościami dla wystąpień typu jednostki i wystąpień relacji.

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

Przykłady

Poniższy przykład pobiera element ObjectStateManager z obiektu ObjectContext i używa menedżera stanu w celu uzyskania dostępu do obiektu w kontekście.

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

W poniższym przykładzie użyto ObjectStateManager metody zwróconej w TryGetObjectStateEntry(EntityKey, ObjectStateEntry) celu pobrania obiektu na podstawie klucza jednostki.

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

Uwagi

ObjectStateManager śledzi wyniki zapytań i zapewnia logikę scalania wielu nakładających się wyników zapytania. Wykonuje również śledzenie zmian w pamięci, gdy użytkownik wstawia, usuwa lub modyfikuje obiekty i udostępnia zestaw zmian dla aktualizacji. Ten zestaw zmian jest używany przez procesor zmian w celu utrwalania modyfikacji.

Ta klasa jest zwykle używana przez ObjectContext aplikacje i nie bezpośrednio w aplikacjach.

Konstruktory

ObjectStateManager(MetadataWorkspace)

Inicjuje nowe wystąpienie klasy ObjectStateManager.

Właściwości

MetadataWorkspace

MetadataWorkspace Pobiera skojarzony z tym menedżerem stanu.

Metody

ChangeObjectState(Object, EntityState)

Zmienia stan ObjectStateEntry określonego obiektu dla określonego entityStateobiektu .

ChangeRelationshipState(Object, Object, String, EntityState)

Zmienia stan relacji między dwoma obiektami jednostki określonymi na podstawie dwóch powiązanych obiektów i nazwy właściwości nawigacji.

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

Zmienia stan relacji między dwoma obiektami jednostki określonymi na podstawie dwóch powiązanych obiektów i właściwości relacji.

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

Zmienia stan relacji między dwoma obiektami jednostki określonymi na podstawie dwóch powiązanych obiektów i wyrażenia LINQ definiującego właściwość nawigacji.

Equals(Object)

Określa, czy dany obiekt jest taki sam, jak bieżący obiekt.

(Odziedziczone po Object)
GetHashCode()

Służy jako domyślna funkcja skrótu.

(Odziedziczone po Object)
GetObjectStateEntries(EntityState)

Zwraca kolekcję ObjectStateEntry obiektów dla obiektów lub relacji z danym stanem.

GetObjectStateEntry(EntityKey)

Zwraca element ObjectStateEntry dla obiektu lub wpisu relacji z określonym kluczem.

GetObjectStateEntry(Object)

Zwraca obiekt ObjectStateEntry dla określonego obiektu.

GetRelationshipManager(Object)

Zwraca wartość RelationshipManager używaną przez określony obiekt.

GetType()

Type Pobiera bieżące wystąpienie.

(Odziedziczone po Object)
MemberwiseClone()

Tworzy płytkią kopię bieżącego Objectelementu .

(Odziedziczone po Object)
ToString()

Zwraca ciąg reprezentujący bieżący obiekt.

(Odziedziczone po Object)
TryGetObjectStateEntry(EntityKey, ObjectStateEntry)

Próbuje pobrać odpowiedni ObjectStateEntry obiekt lub relację z określonym EntityKeyelementem .

TryGetObjectStateEntry(Object, ObjectStateEntry)

Próbuje pobrać odpowiedni element ObjectStateEntry dla określonego Objectelementu .

TryGetRelationshipManager(Object, RelationshipManager)

Zwraca wartość RelationshipManager używaną przez określony obiekt.

Zdarzenia

ObjectStateManagerChanged

Występuje, gdy jednostki są dodawane do lub usuwane z menedżera stanu.

Dotyczy