ObjectStateManager Klass

Definition

Underhåller objekttillstånd och identitetshantering för entitetstypsinstanser och relationsinstanser.

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

Exempel

Följande exempel hämtar ObjectStateManager från ObjectContext och använder tillståndshanteraren för att komma åt ett objekt i kontexten.

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

I följande exempel används TryGetObjectStateEntry(EntityKey, ObjectStateEntry) metoden på den returnerade ObjectStateManager för att hämta ett objekt baserat på dess entitetsnyckel.

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

Kommentarer

ObjectStateManager spårar frågeresultat och tillhandahåller logik för att sammanfoga flera överlappande frågeresultat. Den utför även spårning av minnesintern ändring när en användare infogar, tar bort eller ändrar objekt och tillhandahåller ändringsuppsättningen för uppdateringar. Den här ändringsuppsättningen används av ändringsprocessorn för att bevara ändringar.

Den här klassen används vanligtvis av ObjectContext och inte direkt i program.

Konstruktorer

Name Description
ObjectStateManager(MetadataWorkspace)

Initierar en ny instans av ObjectStateManager klassen.

Egenskaper

Name Description
MetadataWorkspace

Hämtar den MetadataWorkspace associerade med den här tillståndshanteraren.

Metoder

Name Description
ChangeObjectState(Object, EntityState)

Ändrar tillståndet ObjectStateEntry för för ett specifikt objekt till den angivna entityState.

ChangeRelationshipState(Object, Object, String, EntityState)

Ändrar tillståndet för relationen mellan två entitetsobjekt som anges baserat på de två relaterade objekten och namnet på navigeringsegenskapen.

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

Ändrar tillståndet för relationen mellan två entitetsobjekt som anges baserat på de två relaterade objekten och egenskaperna för relationen.

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

Ändrar tillståndet för relationen mellan två entitetsobjekt som anges baserat på de två relaterade objekten och ett LINQ-uttryck som definierar navigeringsegenskapen.

Equals(Object)

Avgör om det angivna objektet är lika med det aktuella objektet.

(Ärvd från Object)
GetHashCode()

Fungerar som standard-hash-funktion.

(Ärvd från Object)
GetObjectStateEntries(EntityState)

Returnerar en samling ObjectStateEntry objekt för objekt eller relationer med det angivna tillståndet.

GetObjectStateEntry(EntityKey)

Returnerar en ObjectStateEntry för objektet eller relationsposten med den angivna nyckeln.

GetObjectStateEntry(Object)

Returnerar ett ObjectStateEntry för det angivna objektet.

GetRelationshipManager(Object)

RelationshipManager Returnerar det som används av det angivna objektet.

GetType()

Hämtar den aktuella instansen Type .

(Ärvd från Object)
MemberwiseClone()

Skapar en ytlig kopia av den aktuella Object.

(Ärvd från Object)
ToString()

Returnerar en sträng som representerar det aktuella objektet.

(Ärvd från Object)
TryGetObjectStateEntry(EntityKey, ObjectStateEntry)

Försöker hämta motsvarande ObjectStateEntry för objektet eller relationen med den angivna EntityKey.

TryGetObjectStateEntry(Object, ObjectStateEntry)

Försöker hämta motsvarande ObjectStateEntry för den angivna Object.

TryGetRelationshipManager(Object, RelationshipManager)

RelationshipManager Returnerar det som används av det angivna objektet.

Händelser

Name Description
ObjectStateManagerChanged

Inträffar när entiteter läggs till eller tas bort från tillståndshanteraren.

Gäller för