ObjectContext.Refresh Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Atualiza objetos específicos no contexto de objeto com os dados da fonte de dados.
Sobrecargas
Refresh(RefreshMode, IEnumerable) |
Atualiza uma coleção de objetos no contexto de objeto com os dados da fonte de dados. |
Refresh(RefreshMode, Object) |
Atualiza um objeto no contexto de objeto com os dados da fonte de dados. |
Comentários
A ordem na qual os objetos são atualizados não é determinística.
Refresh(RefreshMode, IEnumerable)
Atualiza uma coleção de objetos no contexto de objeto com os 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 valor RefreshMode que indica se as alterações de propriedade no contexto de objeto são substituídas por valores de propriedade da fonte de dados.
- collection
- IEnumerable
Uma coleção de objetos IEnumerable a serem atualizados.
Exceções
collection
é null
.
refreshMode
não é válido.
Comentários
Esse método tem a dupla finalidade de permitir que objetos no contexto de objeto sejam atualizados com dados da fonte de dados e ser o mecanismo pelo qual os conflitos podem ser resolvidos. Para obter mais informações, consulte Salvando alterações e gerenciando simultaneidade.
A ordem na qual os objetos são atualizados não é determinística.
Depois Refresh de ser chamado, os valores originais do objeto sempre serão 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. Isso depende do RefreshMode valor. O StoreWins modo significa que os objetos na coleção devem ser atualizados para corresponder aos valores da fonte de dados. ClientWins significa que somente as alterações no contexto do objeto serão mantidas, mesmo se houver outras alterações na fonte de dados.
Para garantir que os objetos tenham sido atualizados pela lógica do lado da fonte de dados, você pode chamar Refresh com StoreWins depois de chamar o SaveChanges método.
Confira também
Aplica-se a
Refresh(RefreshMode, Object)
Atualiza um objeto no contexto de objeto com os 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 valores RefreshMode que especifica qual modo deve ser usado para atualizar o ObjectStateManager.
- entity
- Object
O objeto a ser atualizado.
Exceções
collection
é null
.
refreshMode
não é válido.
Exemplos
Este exemplo tenta salvar alterações e isso pode causar um conflito de simultaneidade. Em seguida, ele mostra como resolver o conflito de simultaneidade atualizando o contexto do objeto antes de salvar novamente 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());
}
}
Comentários
Refresh tem a dupla finalidade de permitir que um objeto seja atualizado com dados da fonte de dados e ser o mecanismo pelo qual os conflitos podem ser resolvidos. Para obter mais informações, consulte Salvando alterações e gerenciando simultaneidade.
A ordem na qual os objetos são atualizados não é determinística.
Depois que o Refresh método for chamado, os valores originais do objeto sempre serão 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. Isso 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 somente as alterações no contexto do objeto serão mantidas, mesmo que tenha havido outras alterações na fonte de dados.
Para garantir que um objeto tenha sido atualizado pela lógica do lado da fonte de dados, você pode chamar o Refresh método com o StoreWins valor depois de chamar o SaveChanges método .