ObjectContext.Refresh Método
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í.
Actualiza objetos concretos en el contexto del objeto con datos procedentes del origen de datos.
Sobrecargas
Refresh(RefreshMode, IEnumerable) |
Actualiza una colección de objetos en el contexto del objeto con datos procedentes del origen de datos. |
Refresh(RefreshMode, Object) |
Actualiza un objeto en el contexto del objeto con datos procedentes del origen de datos. |
Comentarios
El orden en que se actualizan los objetos es no determinista.
Refresh(RefreshMode, IEnumerable)
Actualiza una colección de objetos en el contexto del objeto con datos procedentes del origen de datos.
public:
void Refresh(System::Data::Objects::RefreshMode refreshMode, System::Collections::IEnumerable ^ collection);
public void Refresh (System.Data.Objects.RefreshMode refreshMode, System.Collections.IEnumerable collection);
member this.Refresh : System.Data.Objects.RefreshMode * System.Collections.IEnumerable -> unit
Public Sub Refresh (refreshMode As RefreshMode, collection As IEnumerable)
Parámetros
- refreshMode
- RefreshMode
Valor de RefreshMode que indica si los cambios de las propiedades en el contexto del objeto se sobrescriben con los valores de las propiedades procedentes del origen de datos.
- collection
- IEnumerable
Colección IEnumerable de objetos que hay que actualizar.
Excepciones
collection
es null
.
refreshMode
no es válido.
Comentarios
Este método tiene el doble propósito de permitir que los objetos del contexto del objeto se actualicen con datos procedentes del origen de datos y de ser el mecanismo que permite resolver los conflictos. Para obtener más información, vea Guardar cambios y administrar simultaneidad.
El orden en que se actualizan los objetos es no determinista.
Después Refresh de llamar a , los valores originales del objeto siempre se actualizarán con el valor del origen de datos, pero los valores actuales podrían o no actualizarse con el valor del origen de datos. Esto depende del valor de RefreshMode. El StoreWins modo significa que los objetos de la colección deben actualizarse para que coincidan con los valores del origen de datos. ClientWins significa que solo se conservarán los cambios en el contexto del objeto, incluso si se han producido otros cambios en el origen de datos.
Para asegurarse de que los objetos se han actualizado según la lógica del origen de datos, puede llamar al método Refresh con el valor de StoreWins después de llamar al método SaveChanges.
Consulte también
Se aplica a
Refresh(RefreshMode, Object)
Actualiza un objeto en el contexto del objeto con datos procedentes del origen de datos.
public:
void Refresh(System::Data::Objects::RefreshMode refreshMode, System::Object ^ entity);
public void Refresh (System.Data.Objects.RefreshMode refreshMode, object entity);
member this.Refresh : System.Data.Objects.RefreshMode * obj -> unit
Public Sub Refresh (refreshMode As RefreshMode, entity As Object)
Parámetros
- refreshMode
- RefreshMode
Uno de los valores de RefreshMode que especifica qué modo se debe usar para actualizar el ObjectStateManager.
- entity
- Object
Objeto que se va a actualizar.
Excepciones
collection
es null
.
refreshMode
no es válido.
Ejemplos
En este ejemplo se intentan guardar los cambios y esto puede provocar un conflicto de simultaneidad. A continuación, muestra cómo resolver el conflicto de simultaneidad actualizando el contexto del objeto antes de volver a guardar los cambios.
using (AdventureWorksEntities context =
new AdventureWorksEntities())
{
try
{
// Perform an operation with a high-level of concurrency.
// Change the status of all orders without an approval code.
ObjectQuery<SalesOrderHeader> orders =
context.SalesOrderHeaders.Where(
"it.CreditCardApprovalCode IS NULL").Top("100");
foreach (SalesOrderHeader order in orders)
{
// Reset the order status to 4 = Rejected.
order.Status = 4;
}
try
{
// Try to save changes, which may cause a conflict.
int num = context.SaveChanges();
Console.WriteLine("No conflicts. " +
num.ToString() + " updates saved.");
}
catch (OptimisticConcurrencyException)
{
// Resolve the concurrency conflict by refreshing the
// object context before re-saving changes.
context.Refresh(RefreshMode.ClientWins, orders);
// Save changes.
context.SaveChanges();
Console.WriteLine("OptimisticConcurrencyException "
+ "handled and changes saved");
}
foreach (SalesOrderHeader order in orders)
{
Console.WriteLine("Order ID: " + order.SalesOrderID.ToString()
+ " Order status: " + order.Status.ToString());
}
}
catch (UpdateException ex)
{
Console.WriteLine(ex.ToString());
}
}
Comentarios
Refresh tiene el doble propósito de permitir que se actualice un objeto con datos procedentes del origen de datos y de ser el mecanismo que permite resolver los conflictos. Para obtener más información, vea Guardar cambios y administrar simultaneidad.
El orden en que se actualizan los objetos es no determinista.
Después de llamar al Refresh método , los valores originales del objeto siempre se actualizarán con el valor del origen de datos, pero los valores actuales podrían o no actualizarse con el valor del origen de datos. Esto depende de RefreshMode. El modo StoreWins significa que el objeto debería actualizarse para que coincida con los valores del origen de datos. El valor de ClientWins significa que solo se conservarán los cambios en el contexto del objeto, aunque se hayan producido otros cambios en el origen de datos.
Para asegurarse de que un objeto se ha actualizado según la lógica del origen de datos, puede llamar al método Refresh con el valor de StoreWins después de llamar al método SaveChanges.