ObjectStateManager Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Mantiene el estado del objeto y la administración de identidades para las instancias de tipo de entidad y las instancias de relación.
public ref class ObjectStateManager
public class ObjectStateManager
type ObjectStateManager = class
Public Class ObjectStateManager
- Herencia
-
ObjectStateManager
Ejemplos
En el ejemplo siguiente se obtiene de ObjectStateManager y ObjectContext se usa el administrador de estado para tener acceso a un objeto en el 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 TryGetObjectStateEntry(EntityKey, ObjectStateEntry) método en el devuelto ObjectStateManager para obtener un objeto en función de 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();
}
}
Comentarios
ObjectStateManager realiza un seguimiento de los resultados de la consulta y proporciona lógica para combinar varios resultados de consulta superpuestos. También realiza el seguimiento de cambios en memoria cuando un usuario inserta, elimina o modifica objetos y proporciona el conjunto de cambios para las actualizaciones. El procesador de cambios usa este conjunto de cambios para conservar las modificaciones.
Normalmente, esta clase se usa y ObjectContext no se usa directamente en las aplicaciones.
Constructores
| Nombre | Description |
|---|---|
| ObjectStateManager(MetadataWorkspace) |
Inicializa una nueva instancia de la clase ObjectStateManager. |
Propiedades
| Nombre | Description |
|---|---|
| MetadataWorkspace |
Obtiene el MetadataWorkspace asociado a este administrador de estado. |
Métodos
| Nombre | Description |
|---|---|
| ChangeObjectState(Object, EntityState) |
Cambia el ObjectStateEntry estado de para un objeto específico al especificado |
| ChangeRelationshipState(Object, Object, String, EntityState) |
Cambia el estado de la relación entre dos objetos de entidad especificados en función de los dos objetos relacionados y el nombre de la propiedad de navegación. |
| ChangeRelationshipState(Object, Object, String, String, EntityState) |
Cambia el estado de la relación entre dos objetos de entidad especificados en función de los dos objetos relacionados y las propiedades de la relación. |
| ChangeRelationshipState<TEntity>(TEntity, Object, Expression<Func<TEntity,Object>>, EntityState) |
Cambia el estado de la relación entre dos objetos de entidad especificados en función de los dos objetos relacionados y una expresión LINQ que define la propiedad de navegación. |
| Equals(Object) |
Determina si el objeto especificado es igual al objeto actual. (Heredado de Object) |
| GetHashCode() |
Actúa como función hash predeterminada. (Heredado de Object) |
| GetObjectStateEntries(EntityState) |
Devuelve una colección de ObjectStateEntry objetos para objetos o relaciones con el estado especificado. |
| GetObjectStateEntry(EntityKey) |
Devuelve un ObjectStateEntry para el objeto o la entrada de relación con la clave especificada. |
| GetObjectStateEntry(Object) |
Devuelve un ObjectStateEntry para el objeto especificado. |
| GetRelationshipManager(Object) |
Devuelve el RelationshipManager objeto utilizado por el objeto especificado. |
| GetType() |
Obtiene el Type de la instancia actual. (Heredado de Object) |
| MemberwiseClone() |
Crea una copia superficial del Objectactual. (Heredado de Object) |
| ToString() |
Devuelve una cadena que representa el objeto actual. (Heredado de Object) |
| TryGetObjectStateEntry(EntityKey, ObjectStateEntry) |
Intenta recuperar la correspondiente ObjectStateEntry para el objeto o relación con el especificado EntityKey. |
| TryGetObjectStateEntry(Object, ObjectStateEntry) |
Intenta recuperar el objeto correspondiente ObjectStateEntry para el especificado Object. |
| TryGetRelationshipManager(Object, RelationshipManager) |
Devuelve el RelationshipManager objeto utilizado por el objeto especificado. |
Eventos
| Nombre | Description |
|---|---|
| ObjectStateManagerChanged |
Se produce cuando las entidades se agregan o quitan del administrador de estado. |