¿Le resultó útil esta página?
Sus comentarios sobre este contenido son muy importantes. Háganos saber su opinión.
¿Tiene comentarios adicionales?
Caracteres restantes: 1500
Exportar (0) Imprimir
Expandir todo
Este artículo se tradujo de forma manual. Mueva el puntero sobre las frases del artículo para ver el texto original.
Traducción
Original

ObjectStateManager (Clase)

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

System.Object
  System.Data.Objects.ObjectStateManager

Espacio de nombres:  System.Data.Objects
Ensamblado:  System.Data.Entity (en System.Data.Entity.dll)

public class ObjectStateManager

El tipo ObjectStateManager expone los siguientes miembros.

  NombreDescripción
Método públicoObjectStateManagerInicializa una nueva instancia de la clase ObjectStateManager.
Arriba

  NombreDescripción
Propiedad públicaMetadataWorkspaceObtiene el objeto MetadataWorkspace asociado a este administrador de estado.
Arriba

  NombreDescripción
Método públicoChangeObjectStateCambia el estado del objeto ObjectStateEntry para un objeto concreto en la enumeración entityState especificada.
Método públicoChangeRelationshipState(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.
Método públicoChangeRelationshipState(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.
Método públicoChangeRelationshipState<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.
Método públicoEquals(Object)Determina si el objeto Object especificado es igual al objeto Object actual. (Se hereda de Object).
Método protegidoFinalize Permite que un objeto intente liberar recursos y realizar otras operaciones de limpieza antes de ser reclamado por la recolección de elementos no utilizados. (Se hereda de Object).
Método públicoGetHashCodeActúa como función hash para un tipo concreto. (Se hereda de Object).
Método públicoGetObjectStateEntriesDevuelve una colección de objetos ObjectStateEntry para los objetos o las relaciones que tienen el estado especificado.
Método públicoGetObjectStateEntry(EntityKey)Devuelve un objeto ObjectStateEntry para el objeto o la entrada de relación con la clave especificada.
Método públicoGetObjectStateEntry(Object)Devuelve una clase ObjectStateEntry para el objeto especificado.
Método públicoGetRelationshipManagerDevuelve la clase RelationshipManager usada por el objeto especificado.
Método públicoGetType Obtiene el Type de la instancia actual. (Se hereda de Object).
Método protegidoMemberwiseClone Crea una copia superficial del Object actual. (Se hereda de Object).
Método públicoToString Retorna una cadena que representa al objeto actual. (Se hereda de Object).
Método públicoTryGetObjectStateEntry(EntityKey, ObjectStateEntry)Intenta recuperar el objeto ObjectStateEntry correspondiente para el objeto o la relación con la clase EntityKey especificada.
Método públicoTryGetObjectStateEntry(Object, ObjectStateEntry)Intenta recuperar el objeto ObjectStateEntry correspondiente para la clase Object especificada.
Método públicoTryGetRelationshipManagerDevuelve la clase RelationshipManager usada por el objeto especificado.
Arriba

  NombreDescripción
Evento públicoObjectStateManagerChangedSe produce cuando se agregan o se quitan entidades del administrador de estado.
Arriba

ObjectStateManager realiza el seguimiento de los resultados de la consulta y proporciona la lógica necesaria para combinar varios resultados de la 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 utiliza este conjunto de cambios para conservar las modificaciones.

Esta clase la suele utilizar ObjectContext y no se usa directamente en las aplicaciones.

Estos ejemplos están basados en el Adventure Works Sales Model.

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


.NET Framework

Compatible con: 4, 3.5 SP1

.NET Framework Client Profile

Compatible con: 4

Windows 7, Windows Vista SP1 o posterior, Windows XP SP3, Windows Server 2008 (no se admite Server Core), Windows Server 2008 R2 (se admite Server Core con SP1 o posterior), Windows Server 2003 SP2

.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

Todos los miembros static (Shared en Visual Basic) públicos de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.

Adiciones de comunidad

AGREGAR
Mostrar:
© 2015 Microsoft