ObjectStateManager Osztály

Definíció

Az entitástípus-példányok és kapcsolatpéldányok objektumállapot- és identitáskezelését tartja karban.

public ref class ObjectStateManager
public class ObjectStateManager
type ObjectStateManager = class
Public Class ObjectStateManager
Öröklődés
ObjectStateManager

Példák

Az alábbi példa beolvas egy ObjectStateManager objektumot a ObjectContext környezetből, és az állapotkezelő használatával éri el az objektumot a környezetben.

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

Az alábbi példa a TryGetObjectStateEntry(EntityKey, ObjectStateEntry) visszaadott ObjectStateManager metódust használja egy objektum lekéréséhez az entitáskulcsa alapján.

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

Megjegyzések

ObjectStateManager nyomon követi a lekérdezési eredményeket, és logikát biztosít több egymást átfedő lekérdezési eredmény egyesítéséhez. Emellett a memórián belüli változáskövetést is végrehajtja, amikor egy felhasználó beszúr, töröl vagy módosít objektumokat, és megadja a módosításkészletet a frissítésekhez. Ezt a módosításkészletet a módosításfeldolgozó használja a módosítások megőrzéséhez.

Ezt az osztályt általában az alkalmazások használják ObjectContext , és nem közvetlenül az alkalmazásokban.

Konstruktorok

Name Description
ObjectStateManager(MetadataWorkspace)

Inicializálja a ObjectStateManager osztály új példányát.

Tulajdonságok

Name Description
MetadataWorkspace

Lekéri a MetadataWorkspace társított állapotkezelőt.

Metódusok

Name Description
ChangeObjectState(Object, EntityState)

Egy adott objektum állapotának ObjectStateEntry módosítása a megadottra entityState.

ChangeRelationshipState(Object, Object, String, EntityState)

A két kapcsolódó objektum és a navigációs tulajdonság neve alapján megadott két entitásobjektum közötti kapcsolat állapotát módosítja.

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

A két kapcsolódó objektum és a kapcsolat tulajdonságai alapján megadott két entitásobjektum közötti kapcsolat állapotát módosítja.

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

A két kapcsolódó objektum és a navigációs tulajdonságot meghatározó LINQ-kifejezés alapján megadott két entitásobjektum közötti kapcsolat állapotát módosítja.

Equals(Object)

Meghatározza, hogy a megadott objektum egyenlő-e az aktuális objektummal.

(Öröklődés forrása Object)
GetHashCode()

Ez az alapértelmezett kivonatoló függvény.

(Öröklődés forrása Object)
GetObjectStateEntries(EntityState)

Objektumgyűjteményt ObjectStateEntry ad vissza az adott állapotú objektumokhoz vagy kapcsolatokhoz.

GetObjectStateEntry(EntityKey)

A megadott kulccsal visszaadott ObjectStateEntry objektum- vagy kapcsolatbejegyzést adja vissza.

GetObjectStateEntry(Object)

A megadott objektumhoz ad vissza egy ObjectStateEntry értéket.

GetRelationshipManager(Object)

RelationshipManager A megadott objektum által használt értéket adja vissza.

GetType()

Lekéri az Type aktuális példányt.

(Öröklődés forrása Object)
MemberwiseClone()

Az aktuális Objectpéldány sekély másolatát hozza létre.

(Öröklődés forrása Object)
ToString()

Az aktuális objektumot jelképező sztringet ad vissza.

(Öröklődés forrása Object)
TryGetObjectStateEntry(EntityKey, ObjectStateEntry)

Megpróbálja lekérni a megadott ObjectStateEntryobjektumnak vagy kapcsolatnak megfelelőtEntityKey.

TryGetObjectStateEntry(Object, ObjectStateEntry)

Megpróbálja lekérni a megadotthoz ObjectStateEntrytartozótObject.

TryGetRelationshipManager(Object, RelationshipManager)

RelationshipManager A megadott objektum által használt értéket adja vissza.

esemény

Name Description
ObjectStateManagerChanged

Akkor fordul elő, ha az entitásokat hozzáadják vagy eltávolítják az állapotkezelőből.

A következőre érvényes: