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 dell'origine dati.
Overload
| Nome | Descrizione |
|---|---|
| Refresh(RefreshMode, IEnumerable) |
Aggiorna una raccolta di oggetti nel contesto dell'oggetto con i dati dell'origine dati. |
| Refresh(RefreshMode, Object) |
Aggiorna un oggetto nel contesto dell'oggetto con i dati dell'origine dati. |
Commenti
L'ordine in cui gli oggetti vengono aggiornati non è deterministico.
Refresh(RefreshMode, IEnumerable)
Aggiorna una raccolta di oggetti nel contesto dell'oggetto con i dati dell'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 RefreshMode che indica se le modifiche delle proprietà nel contesto dell'oggetto vengono sovrascritte con i valori delle proprietà dell'origine dati.
- collection
- IEnumerable
Raccolta IEnumerable di oggetti da aggiornare.
Eccezioni
collection è null.
refreshMode non è valido.
Commenti
Questo metodo ha lo scopo doppio di consentire l'aggiornamento degli oggetti nel contesto dell'oggetto con i dati dell'origine dati e il meccanismo in base al quale è possibile risolvere i conflitti.
L'ordine in cui gli oggetti vengono aggiornati 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. Questo dipende dal RefreshMode valore. La StoreWins modalità indica che gli oggetti nella raccolta devono essere aggiornati in modo che corrispondano ai valori dell'origine dati. ClientWins significa che verranno mantenute solo le modifiche nel contesto dell'oggetto, anche se sono state apportate altre modifiche nell'origine dati.
Per assicurarsi che gli oggetti siano stati aggiornati dalla logica lato origine dati, è possibile chiamare con StoreWins dopo aver chiamato Refresh il SaveChanges metodo .
Vedi anche
Si applica a
Refresh(RefreshMode, Object)
Aggiorna un oggetto nel contesto dell'oggetto con i dati dell'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 RefreshMode valori che specifica la modalità da utilizzare per l'aggiornamento di ObjectStateManager.
- entity
- Object
Oggetto da aggiornare.
Eccezioni
refreshMode non è valido.
Un oggetto non è associato al contesto.
Esempio
In questo esempio viene eseguito un tentativo di salvataggio delle modifiche e questo può causare un conflitto di concorrenza. Viene quindi illustrato come risolvere il conflitto di concorrenza aggiornando il contesto dell'oggetto prima di salvare di nuovo 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 lo scopo doppio di consentire l'aggiornamento di un oggetto con i dati dell'origine dati e il meccanismo in base al quale è possibile risolvere i conflitti.
L'ordine in cui gli oggetti vengono aggiornati non è deterministico.
Dopo aver chiamato il Refresh metodo, i valori originali dell'oggetto verranno sempre aggiornati con il valore dell'origine dati, ma i valori correnti potrebbero o non essere aggiornati con il valore dell'origine dati. Questo dipende dall'oggetto RefreshMode. La StoreWins modalità indica che l'oggetto deve essere aggiornato in modo che corrisponda ai valori dell'origine dati. Il ClientWins valore indica che verranno mantenute solo le modifiche nel contesto dell'oggetto, anche se sono state apportate altre modifiche nell'origine dati.
Per assicurarsi che un oggetto sia stato aggiornato dalla logica lato origine dati, è possibile chiamare il Refresh metodo con il StoreWins valore dopo aver chiamato il SaveChanges metodo .