ObjectStateManager Classe

Definição

Mantém a gestão do estado e identidade dos objetos para instâncias de tipos de entidade e instâncias de relação.

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

Exemplos

O exemplo seguinte obtém o ObjectStateManager de e ObjectContext usa o gestor de estados para aceder a 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 seguinte utiliza o TryGetObjectStateEntry(EntityKey, ObjectStateEntry) método no retorno ObjectStateManager para obter um objeto com base na 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();
    }
}

Observações

ObjectStateManager Acompanha os resultados das consultas e fornece lógica para fundir múltiplos resultados sobrepostos de consultas. Também realiza o acompanhamento de alterações em memória quando um utilizador insere, apaga ou modifica objetos, e fornece o conjunto de alterações para atualizações. Este conjunto de alterações é usado pelo processador de alterações para persistir modificações.

Esta classe é normalmente usada por ObjectContext e não diretamente em aplicações.

Construtores

Name Description
ObjectStateManager(MetadataWorkspace)

Inicializa uma nova instância da ObjectStateManager classe.

Propriedades

Name Description
MetadataWorkspace

Fica associado MetadataWorkspace a este gestor estadual.

Métodos

Name Description
ChangeObjectState(Object, EntityState)

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

ChangeRelationshipState(Object, Object, String, EntityState)

Altera o estado da relação entre dois objetos entidade que é especificado 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 entidade que é especificado 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 entidade que é especificada com base nos dois objetos relacionados e numa 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 função de hash predefinida.

(Herdado de Object)
GetObjectStateEntries(EntityState)

Devolve uma coleção de ObjectStateEntry objetos para objetos ou relações com o estado dado.

GetObjectStateEntry(EntityKey)

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

GetObjectStateEntry(Object)

Devolve um ObjectStateEntry para o objeto especificado.

GetRelationshipManager(Object)

Devolve 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 atual Object.

(Herdado de Object)
ToString()

Devolve uma cadeia que representa o objeto atual.

(Herdado de Object)
TryGetObjectStateEntry(EntityKey, ObjectStateEntry)

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

TryGetObjectStateEntry(Object, ObjectStateEntry)

Tenta recuperar o correspondente ObjectStateEntry para o especificado Object.

TryGetRelationshipManager(Object, RelationshipManager)

Devolve o RelationshipManager que é usado pelo objeto especificado.

evento

Name Description
ObjectStateManagerChanged

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

Aplica-se a