ObjectContext.Refresh Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Aggiorna oggetti specifici nel contesto dell'oggetto con i dati presenti nell'origine dati.
Overload
Refresh(RefreshMode, IEnumerable) |
Aggiorna una raccolta di oggetti nel contesto dell'oggetto con i dati presenti nell'origine dati. |
Refresh(RefreshMode, Object) |
Aggiorna un oggetto nel contesto dell'oggetto con i dati presenti nell'origine dati. |
Commenti
L'ordine in cui vengono aggiornati gli oggetti non è deterministico.
Refresh(RefreshMode, IEnumerable)
Aggiorna una raccolta di oggetti nel contesto dell'oggetto con i dati presenti nell'origine dati.
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)
Parametri
- refreshMode
- RefreshMode
Valore di RefreshMode che indica se le modifiche alla proprietà nel contesto dell'oggetto vengono sovrascritte con i valori della proprietà presenti nell'origine dati.
- collection
- IEnumerable
Raccolta IEnumerable di oggetti da aggiornare.
Eccezioni
collection
è null
.
refreshMode
non è valido.
Commenti
Questo metodo ha il duplice scopo di consentire agli oggetti nel contesto dell'oggetto di essere aggiornati con i dati presenti nell'origine dati e di rappresentare il meccanismo mediante il quale è possibile risolvere i conflitti. Per altre informazioni, vedere Salvataggio delle modifiche e Gestione della concorrenza.
L'ordine in cui vengono aggiornati gli oggetti non è deterministico.
Dopo Refresh la chiamata, i valori originali dell'oggetto verranno sempre aggiornati con il valore dell'origine dati, ma i valori correnti potrebbero o meno essere aggiornati con il valore dell'origine dati. Dipende dal valore RefreshMode. La StoreWins modalità indica che gli oggetti nella raccolta devono essere aggiornati in modo che corrispondano ai valori dell'origine dati. ClientWins significa che solo le modifiche nel contesto dell'oggetto verranno mantenute, anche se sono state apportate altre modifiche nell'origine dati.
Per essere certi che gli oggetti siano stati aggiornati in base a una logica lato origine dei dati, è possibile chiamare Refresh con StoreWins dopo la chiamata al metodo SaveChanges.
Vedi anche
Si applica a
Refresh(RefreshMode, Object)
Aggiorna un oggetto nel contesto dell'oggetto con i dati presenti nell'origine dati.
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)
Parametri
- refreshMode
- RefreshMode
Uno dei valori di RefreshMode che specifica la modalità da utilizzare per l'aggiornamento di ObjectStateManager.
- entity
- Object
Oggetto da aggiornare.
Eccezioni
collection
è null
.
refreshMode
non è valido.
Esempio
In questo esempio si tenta di salvare le modifiche e ciò può causare un conflitto di concorrenza. Viene quindi illustrato come risolvere il conflitto di concorrenza aggiornando il contesto dell'oggetto prima di salvare nuovamente le modifiche.
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());
}
}
Commenti
Refresh ha il duplice scopo di consentire a un oggetto di essere aggiornato con i dati presenti nell'origine dati e di rappresentare il meccanismo mediante il quale è possibile risolvere i conflitti. Per altre informazioni, vedere Salvataggio delle modifiche e Gestione della concorrenza.
L'ordine in cui vengono aggiornati gli oggetti non è deterministico.
Dopo la chiamata al Refresh metodo, i valori originali dell'oggetto verranno sempre aggiornati con il valore dell'origine dati, ma i valori correnti potrebbero o meno essere aggiornati con il valore dell'origine dati. Dipende da RefreshMode. La modalità StoreWins implica che l'oggetto deve essere aggiornato in modo da corrispondere ai valori dell'origine dati. Il valore ClientWins implica che solo le modifiche nel contesto dell'oggetto vengono rese persistenti, anche se sono state apportate altre modifiche nell'origine dati.
Per essere certi che un oggetto sia stato aggiornato in base alla logica lato origine dei dati, è possibile chiamare il metodo Refresh con il valore StoreWins dopo la chiamata al metodo SaveChanges.