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 específicos en el contexto del objeto con datos del origen de datos.
Sobrecargas
| Nombre | Description |
|---|---|
| Refresh(RefreshMode, IEnumerable) |
Actualiza una colección de objetos en el contexto del objeto con datos del origen de datos. |
| Refresh(RefreshMode, Object) |
Actualiza un objeto en el contexto del objeto con datos del origen de datos. |
Comentarios
El orden en el que se actualizan los objetos es no determinista.
Refresh(RefreshMode, IEnumerable)
Actualiza una colección de objetos en el contexto del objeto con datos 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 RefreshMode que indica si los cambios de propiedad en el contexto del objeto se sobrescriben con valores de propiedad del origen de datos.
- collection
- IEnumerable
Colección IEnumerable de objetos que se van a 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 del origen de datos y que sean el mecanismo por el que se pueden resolver conflictos.
El orden en el 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 es posible que los valores actuales se actualicen o no con el valor del origen de datos. Esto depende del RefreshMode valor. 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 la lógica del origen de datos ha actualizado los objetos, puede llamar a Refresh con StoreWins después de llamar al SaveChanges método .
Consulte también
Se aplica a
Refresh(RefreshMode, Object)
Actualiza un objeto en el contexto del objeto con datos 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 RefreshMode valores que especifica el modo que se va a usar para actualizar .ObjectStateManager
- entity
- Object
Objeto que se va a actualizar.
Excepciones
refreshMode no es válido.
Un objeto no está asociado al contexto.
Ejemplos
En este ejemplo se intentan guardar los cambios y esto puede provocar un conflicto de simultaneidad. A continuación, se 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 un objeto se actualice con datos del origen de datos y que sea el mecanismo por el que se pueden resolver conflictos.
El orden en el 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 StoreWins modo significa que el objeto debe actualizarse para que coincida con los valores del origen de datos. El ClientWins valor 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 la lógica del origen de datos ha actualizado un objeto, puede llamar al Refresh método con el StoreWins valor después de llamar al SaveChanges método .