ObjectStateManager Klas

Definitie

Onderhoudt objectstatus en identiteitsbeheer voor instanties van entiteitstypen en relatie-exemplaren.

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

Voorbeelden

In het volgende voorbeeld wordt de ObjectStateManager statusbeheerder opgehaald en ObjectContext gebruikt om toegang te krijgen tot een object in de context.

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

In het volgende voorbeeld wordt de TryGetObjectStateEntry(EntityKey, ObjectStateEntry) methode voor het geretourneerde object gebruikt ObjectStateManager om een object op te halen op basis van de entiteitssleutel.

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

Opmerkingen

ObjectStateManager houdt queryresultaten bij en biedt logica voor het samenvoegen van meerdere overlappende queryresultaten. Het voert ook het bijhouden van wijzigingen in het geheugen uit wanneer een gebruiker objecten invoegt, verwijdert of wijzigt en de wijzigingenset biedt voor updates. Deze wijzigingsset wordt door de wijzigingsprocessor gebruikt om wijzigingen te behouden.

Deze klasse wordt doorgaans gebruikt door ObjectContext en niet rechtstreeks in toepassingen.

Constructors

Name Description
ObjectStateManager(MetadataWorkspace)

Initialiseert een nieuw exemplaar van de ObjectStateManager klasse.

Eigenschappen

Name Description
MetadataWorkspace

Hiermee haalt u de MetadataWorkspace gekoppelde statusmanager op.

Methoden

Name Description
ChangeObjectState(Object, EntityState)

Wijzigt de status van het ObjectStateEntry voor een specifiek object in de opgegeven entityState.

ChangeRelationshipState(Object, Object, String, EntityState)

Hiermee wijzigt u de status van de relatie tussen twee entiteitsobjecten die zijn opgegeven op basis van de twee gerelateerde objecten en de naam van de navigatie-eigenschap.

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

Hiermee wijzigt u de status van de relatie tussen twee entiteitsobjecten die zijn opgegeven op basis van de twee gerelateerde objecten en de eigenschappen van de relatie.

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

Hiermee wijzigt u de status van de relatie tussen twee entiteitsobjecten die zijn opgegeven op basis van de twee gerelateerde objecten en een LINQ-expressie die de navigatie-eigenschap definieert.

Equals(Object)

Bepaalt of het opgegeven object gelijk is aan het huidige object.

(Overgenomen van Object)
GetHashCode()

Fungeert als de standaardhashfunctie.

(Overgenomen van Object)
GetObjectStateEntries(EntityState)

Retourneert een verzameling ObjectStateEntry objecten voor objecten of relaties met de opgegeven status.

GetObjectStateEntry(EntityKey)

Retourneert een ObjectStateEntry voor het object of de relatievermelding met de opgegeven sleutel.

GetObjectStateEntry(Object)

Retourneert een ObjectStateEntry voor het opgegeven object.

GetRelationshipManager(Object)

Retourneert de RelationshipManager waarde die wordt gebruikt door het opgegeven object.

GetType()

Hiermee haalt u de Type huidige instantie op.

(Overgenomen van Object)
MemberwiseClone()

Hiermee maakt u een ondiepe kopie van de huidige Object.

(Overgenomen van Object)
ToString()

Retourneert een tekenreeks die het huidige object vertegenwoordigt.

(Overgenomen van Object)
TryGetObjectStateEntry(EntityKey, ObjectStateEntry)

Hiermee wordt geprobeerd het bijbehorende ObjectStateEntry voor het object of de relatie met het opgegeven EntityKeyobject op te halen.

TryGetObjectStateEntry(Object, ObjectStateEntry)

Probeert de corresponderende ObjectStateEntry voor de opgegeven Objectop te halen.

TryGetRelationshipManager(Object, RelationshipManager)

Retourneert de RelationshipManager waarde die wordt gebruikt door het opgegeven object.

gebeurtenis

Name Description
ObjectStateManagerChanged

Treedt op wanneer entiteiten worden toegevoegd aan of verwijderd uit de statusbeheerder.

Van toepassing op