ObjectStateManager Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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 |
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. |