Compartir vía


ObjectStateManager Clase

Definición

Mantiene el estado de los objetos y la administración de las identidades en las instancias de tipo de entidad y en las instancias de relación.

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

Ejemplos

En el ejemplo siguiente, se obtiene el ObjectStateManager del ObjectContext y se usa el administrador de estados para tener acceso a un objeto del contexto.

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

En el ejemplo siguiente, se usa el método TryGetObjectStateEntry(EntityKey, ObjectStateEntry) en el ObjectStateManager devuelto para obtener un objeto basado en su clave de entidad.

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

Comentarios

ObjectStateManager realiza un seguimiento de los resultados de la consulta y proporciona lógica para combinar varios resultados de consulta superpuestos. Además, realiza un seguimiento de los cambios en memoria cuando un usuario inserta, elimina o modifica objetos, y proporciona el conjunto de cambios para las actualizaciones. El procesador de cambios usa este conjunto de cambios para almacenar las modificaciones.

ObjectContext usa normalmente esta clase, pero no se usa directamente en las aplicaciones.

Constructores

ObjectStateManager(MetadataWorkspace)

Inicializa una nueva instancia de la clase ObjectStateManager.

Propiedades

MetadataWorkspace

Obtiene el MetadataWorkspace asociada a este administrador de estados.

Métodos

ChangeObjectState(Object, EntityState)

Cambia el estado del objeto ObjectStateEntry para un objeto concreto en la enumeración entityState especificada.

ChangeRelationshipState(Object, Object, String, EntityState)

Cambia el estado de la relación entre dos objetos entidad especificados basándose en los dos objetos relacionados y el nombre de la propiedad de navegación.

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

Cambia el estado de la relación entre dos objetos entidad especificados basándose en los dos objetos relacionados y en las propiedades de la relación.

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

Cambia el estado de la relación entre dos objetos entidad especificados basándose en los dos objetos relacionados y una expresión LINQ que define la propiedad de navegación.

Equals(Object)

Determina si el objeto especificado es igual que el objeto actual.

(Heredado de Object)
GetHashCode()

Sirve como la función hash predeterminada.

(Heredado de Object)
GetObjectStateEntries(EntityState)

Devuelve una colección de objetos ObjectStateEntry para los objetos o las relaciones que tienen el estado especificado.

GetObjectStateEntry(EntityKey)

Devuelve una ObjectStateEntry para la entrada de objeto o de relación con la clave especificada.

GetObjectStateEntry(Object)

Devuelve una ObjectStateEntry para el objeto especificado.

GetRelationshipManager(Object)

Devuelve la clase RelationshipManager usada por el objeto especificado.

GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
MemberwiseClone()

Crea una copia superficial del Object actual.

(Heredado de Object)
ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)
TryGetObjectStateEntry(EntityKey, ObjectStateEntry)

Intenta recuperar la correspondiente ObjectStateEntry para el objeto o la relación con la EntityKey especificada.

TryGetObjectStateEntry(Object, ObjectStateEntry)

Intenta recuperar la correspondiente ObjectStateEntry para el Object especificado.

TryGetRelationshipManager(Object, RelationshipManager)

Devuelve la clase RelationshipManager usada por el objeto especificado.

Eventos

ObjectStateManagerChanged

Se produce cuando las entidades se agregan o se quitan del administrador de estados.

Se aplica a