ObjectStateManager Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Maintient la gestion de l'identité et de l'état d'objet 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 l'objet ObjectStateManager à partir de l'objet ObjectContext 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 méthode TryGetObjectStateEntry(EntityKey, ObjectStateEntry) sur l'objet ObjectStateManager retourné 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 suit les résultats de la requête et fournit une logique pour fusionner plusieurs résultats de requête qui se chevauchent. Il effectue également le 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 modification pour rendre les modifications persistantes.
Cette classe est généralement utilisée par ObjectContext, et non directement dans les applications.
Constructeurs
ObjectStateManager(MetadataWorkspace) |
Initialise une nouvelle instance de la classe ObjectStateManager. |
Propriétés
MetadataWorkspace |
Obtient l'objet MetadataWorkspace associé à ce gestionnaire d'état. |
Méthodes
ChangeObjectState(Object, EntityState) |
Remplace l'état du ObjectStateEntry pour un objet spécifique par le |
ChangeRelationshipState(Object, Object, String, EntityState) |
Modifie l'état de la relation entre deux objets d'entité spécifiée 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ée 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ée en fonction des deux objets associés 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() |
Fait office 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 un objet ObjectStateEntry pour l'entrée d'objet ou de relation avec la clé spécifiée. |
GetObjectStateEntry(Object) |
Retourne un objet ObjectStateEntry pour l'objet spécifié. |
GetRelationshipManager(Object) |
Retourne le RelationshipManager utilisé par l'objet spécifié. |
GetType() |
Obtient le Type de l'instance actuelle. (Hérité de Object) |
MemberwiseClone() |
Crée une copie superficielle du Object actuel. (Hérité de Object) |
ToString() |
Retourne une chaîne qui représente l'objet actuel. (Hérité de Object) |
TryGetObjectStateEntry(EntityKey, ObjectStateEntry) |
Essaie de récupérer l'objet ObjectStateEntry correspondant pour l'objet ou la relation avec l'objet EntityKey spécifié. |
TryGetObjectStateEntry(Object, ObjectStateEntry) |
Essaie de récupérer l'objet ObjectStateEntry correspondant pour l'objet Object spécifié. |
TryGetRelationshipManager(Object, RelationshipManager) |
Retourne le RelationshipManager utilisé par l'objet spécifié. |
Événements
ObjectStateManagerChanged |
Se produit lorsque des entités sont ajoutées ou supprimées du gestionnaire d'état. |