ObjectContext.Refresh Método
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.
Atualiza objetos específicos no contexto do objeto com dados da fonte de dados.
Sobrecargas
| Name | Description |
|---|---|
| Refresh(RefreshMode, IEnumerable) |
Atualiza uma coleção de objetos no contexto do objeto com dados da fonte de dados. |
| Refresh(RefreshMode, Object) |
Atualiza um objeto no contexto do objeto com dados da fonte de dados. |
Observações
A ordem em que os objetos são atualizados é não determinística.
Refresh(RefreshMode, IEnumerable)
Atualiza uma coleção de objetos no contexto do objeto com dados da fonte de dados.
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
Um RefreshMode valor que indica se as alterações de propriedade no contexto do objeto são sobrescritas pelos valores de propriedade da fonte de dados.
- collection
- IEnumerable
Uma IEnumerable coleção de objetos para refrescar.
Exceções
collection é null.
refreshMode não é válido.
Observações
Este método tem o duplo propósito de permitir que objetos no contexto do objeto sejam atualizados com dados da fonte de dados, sendo o mecanismo pelo qual conflitos podem ser resolvidos. Para mais informações, consulte Poupar Alterações e Gerir a Concorrência.
A ordem em que os objetos são atualizados é não determinística.
Depois de Refresh ser chamado, os valores originais do objeto serão sempre atualizados com o valor da fonte de dados, mas os valores atuais podem ou não ser atualizados com o valor da fonte de dados. Isto depende do RefreshMode valor. Este StoreWins modo significa que os objetos na coleção devem ser atualizados para corresponder aos valores da fonte de dados. ClientWins significa que apenas as alterações no contexto do objeto serão mantidas, mesmo que tenham ocorrido outras alterações na fonte de dados.
Para garantir que os objetos foram atualizados por lógica do lado da fonte de dados, pode chamar Refresh com StoreWins depois de chamar o SaveChanges método.
Ver também
Aplica-se a
Refresh(RefreshMode, Object)
Atualiza um objeto no contexto do objeto com dados da fonte de dados.
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
Um dos RefreshMode valores que especifica qual modo usar para atualizar o ObjectStateManager.
- entity
- Object
O objeto a renovar.
Exceções
refreshMode não é válido.
Um objeto não está ligado ao contexto.
Exemplos
Este exemplo tenta guardar alterações, o que pode causar um conflito de concorrência. Depois, mostra como resolver o conflito de concorrência ao atualizar o contexto do objeto antes de voltar a guardar as alterações.
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());
}
}
Observações
Refresh tem o duplo propósito de permitir que um objeto seja atualizado com dados da fonte de dados e de ser o mecanismo pelo qual conflitos podem ser resolvidos. Para mais informações, consulte Poupar Alterações e Gerir a Concorrência.
A ordem em que os objetos são atualizados é não determinística.
Depois de chamado o Refresh método, os valores originais do objeto serão sempre atualizados com o valor da fonte de dados, mas os valores atuais podem ou não ser atualizados com o valor da fonte de dados. Isto depende do RefreshMode. O StoreWins modo significa que o objeto deve ser atualizado para corresponder aos valores da fonte de dados. O ClientWins valor significa que apenas as alterações no contexto do objeto serão mantidas, mesmo que tenham ocorrido outras alterações na fonte de dados.
Para garantir que um objeto foi atualizado por lógica do lado da fonte de dados, pode chamar o Refresh método com o StoreWins valor depois de chamar o SaveChanges método.