ObjectStateManager Classe
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
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 |
| 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. |