Partager via


ObjectStateManager Classe

Définition

Gère l’état de l’objet et la gestion des identités pour les instances de type d’entité et les instances de relation.

public ref class ObjectStateManager
public class ObjectStateManager
type ObjectStateManager = class
Public Class ObjectStateManager
Héritage
ObjectStateManager

Exemples

L’exemple suivant obtient à ObjectStateManager partir du ObjectContext gestionnaire d’état et utilise le gestionnaire d’état pour accéder à un objet dans le contexte.

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

L’exemple suivant utilise la TryGetObjectStateEntry(EntityKey, ObjectStateEntry) méthode sur l’objet retourné ObjectStateManager pour obtenir un objet en fonction de sa clé d’entité.

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

Remarques

ObjectStateManager effectue le suivi des résultats de requête et fournit une logique pour fusionner plusieurs résultats de requête qui se chevauchent. Il effectue également un suivi des modifications en mémoire lorsqu’un utilisateur insère, supprime ou modifie des objets et fournit le jeu de modifications pour les mises à jour. Ce jeu de modifications est utilisé par le processeur de modifications pour conserver les modifications.

Cette classe est généralement utilisée par ObjectContext et non directement dans les applications.

Constructeurs

Nom Description
ObjectStateManager(MetadataWorkspace)

Initialise une nouvelle instance de la classe ObjectStateManager.

Propriétés

Nom Description
MetadataWorkspace

Obtient l’associé MetadataWorkspace à ce gestionnaire d’état.

Méthodes

Nom Description
ChangeObjectState(Object, EntityState)

Modifie l’état ObjectStateEntry d’un objet spécifique à l’objet spécifié entityState.

ChangeRelationshipState(Object, Object, String, EntityState)

Modifie l’état de la relation entre deux objets d’entité spécifiés en fonction des deux objets associés et du nom de la propriété de navigation.

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

Modifie l’état de la relation entre deux objets d’entité spécifiés en fonction des deux objets associés et des propriétés de la relation.

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

Modifie l’état de la relation entre deux objets d’entité spécifiés en fonction des deux objets connexes et d’une expression LINQ qui définit la propriété de navigation.

Equals(Object)

Détermine si l’objet spécifié est égal à l’objet actuel.

(Hérité de Object)
GetHashCode()

Sert de fonction de hachage par défaut.

(Hérité de Object)
GetObjectStateEntries(EntityState)

Retourne une collection d’objets ObjectStateEntry pour les objets ou les relations avec l’état donné.

GetObjectStateEntry(EntityKey)

Retourne une ObjectStateEntry entrée d’objet ou de relation avec la clé spécifiée.

GetObjectStateEntry(Object)

Retourne une ObjectStateEntry valeur pour l’objet spécifié.

GetRelationshipManager(Object)

Retourne la RelationshipManager valeur utilisée par l’objet spécifié.

GetType()

Obtient la Type de l’instance actuelle.

(Hérité de Object)
MemberwiseClone()

Crée une copie superficielle du Objectactuel.

(Hérité de Object)
ToString()

Retourne une chaîne qui représente l’objet actuel.

(Hérité de Object)
TryGetObjectStateEntry(EntityKey, ObjectStateEntry)

Tente de récupérer le correspondant ObjectStateEntry pour l’objet ou la relation avec l’objet ou la relation spécifié EntityKey.

TryGetObjectStateEntry(Object, ObjectStateEntry)

Tente de récupérer le correspondant ObjectStateEntry pour le fichier spécifié Object.

TryGetRelationshipManager(Object, RelationshipManager)

Retourne la RelationshipManager valeur utilisée par l’objet spécifié.

Événements

Nom Description
ObjectStateManagerChanged

Se produit lorsque des entités sont ajoutées ou supprimées du gestionnaire d’état.

S’applique à