Partilhar via


ObjectStateManager Classe

Definição

Mantém o estado de objeto e o gerenciamento de identidade para instâncias de relação e instâncias de tipo de entidade.

public ref class ObjectStateManager
public class ObjectStateManager
type ObjectStateManager = class
Public Class ObjectStateManager
Herança
ObjectStateManager

Exemplos

O exemplo a seguir obtém o ObjectStateManagerObjectContext do e usa o gerenciador de estado para acessar um objeto no 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");
    }
}

O exemplo a seguir usa o TryGetObjectStateEntry(EntityKey, ObjectStateEntry) método no retornado ObjectStateManager para obter um objeto com base em sua chave de entidade.

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

Comentários

ObjectStateManager acompanha os resultados da consulta e fornece lógica para mesclar vários resultados de consulta sobrepostos. Ele também executa o controle de alterações na memória quando um usuário insere, exclui ou modifica objetos e fornece o conjunto de alterações para atualizações. Esse conjunto de alterações é usado pelo processador de alterações para persistir modificações.

Normalmente, essa classe é usada por ObjectContext e não diretamente em aplicativos.

Construtores

ObjectStateManager(MetadataWorkspace)

Inicializa uma nova instância da classe ObjectStateManager.

Propriedades

MetadataWorkspace

Obtém o MetadataWorkspace associado a esse gerenciador de estado.

Métodos

ChangeObjectState(Object, EntityState)

Altera o estado do ObjectStateEntry para um objeto específico para o entityState especificado.

ChangeRelationshipState(Object, Object, String, EntityState)

Altera o estado da relação entre dois objetos de entidade que é especificada com base nos dois objetos relacionados e no nome da propriedade de navegação.

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

Altera o estado da relação entre dois objetos de entidade que é especificada com base nos dois objetos relacionados e nas propriedades da relação.

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

Altera o estado da relação entre dois objetos de entidade que é especificada com base nos dois objetos relacionados e em uma expressão LINQ que define a propriedade de navegação.

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetHashCode()

Serve como a função de hash padrão.

(Herdado de Object)
GetObjectStateEntries(EntityState)

Retorna uma coleção de objetos ObjectStateEntry para objetos ou relacionamentos com o estado determinado.

GetObjectStateEntry(EntityKey)

Retorna um ObjectStateEntry para o objeto ou para a entrada de relação com a chave especificada.

GetObjectStateEntry(Object)

Retorna um ObjectStateEntry para o objeto especificado.

GetRelationshipManager(Object)

Retorna o RelationshipManager que é usado pelo objeto especificado.

GetType()

Obtém o Type da instância atual.

(Herdado de Object)
MemberwiseClone()

Cria uma cópia superficial do Object atual.

(Herdado de Object)
ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)
TryGetObjectStateEntry(EntityKey, ObjectStateEntry)

Tenta recuperar o ObjectStateEntry correspondente para o objeto ou a relação com o EntityKey especificado.

TryGetObjectStateEntry(Object, ObjectStateEntry)

Tenta recuperar o ObjectStateEntry correspondente para o Object especificado.

TryGetRelationshipManager(Object, RelationshipManager)

Retorna o RelationshipManager que é usado pelo objeto especificado.

Eventos

ObjectStateManagerChanged

Ocorre quando entidades são adicionadas ou removidas do gerenciador de estado.

Aplica-se a