Compartir a través de


ObjectStateManager Clase

Definición

Mantiene el estado del objeto y la administración de identidades para las instancias de tipo de entidad y 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 de ObjectStateManager y ObjectContext se usa el administrador de estado para tener acceso a un objeto en el 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 TryGetObjectStateEntry(EntityKey, ObjectStateEntry) método en el devuelto ObjectStateManager para obtener un objeto en función de 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. También realiza el seguimiento de 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 conservar las modificaciones.

Normalmente, esta clase se usa y ObjectContext no se usa directamente en las aplicaciones.

Constructores

Nombre Description
ObjectStateManager(MetadataWorkspace)

Inicializa una nueva instancia de la clase ObjectStateManager.

Propiedades

Nombre Description
MetadataWorkspace

Obtiene el MetadataWorkspace asociado a este administrador de estado.

Métodos

Nombre Description
ChangeObjectState(Object, EntityState)

Cambia el ObjectStateEntry estado de para un objeto específico al especificado entityState.

ChangeRelationshipState(Object, Object, String, EntityState)

Cambia el estado de la relación entre dos objetos de entidad especificados en función de 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 de entidad especificados en función de los dos objetos relacionados y 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 de entidad especificados en función de 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 al objeto actual.

(Heredado de Object)
GetHashCode()

Actúa como función hash predeterminada.

(Heredado de Object)
GetObjectStateEntries(EntityState)

Devuelve una colección de ObjectStateEntry objetos para objetos o relaciones con el estado especificado.

GetObjectStateEntry(EntityKey)

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

GetObjectStateEntry(Object)

Devuelve un ObjectStateEntry para el objeto especificado.

GetRelationshipManager(Object)

Devuelve el RelationshipManager objeto utilizado por el objeto especificado.

GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
MemberwiseClone()

Crea una copia superficial del Objectactual.

(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 relación con el especificado EntityKey.

TryGetObjectStateEntry(Object, ObjectStateEntry)

Intenta recuperar el objeto correspondiente ObjectStateEntry para el especificado Object.

TryGetRelationshipManager(Object, RelationshipManager)

Devuelve el RelationshipManager objeto utilizado por el objeto especificado.

Eventos

Nombre Description
ObjectStateManagerChanged

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

Se aplica a