ObjectContext.Refresh Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Hiermee worden specifieke objecten in de objectcontext bijgewerkt met gegevens uit de gegevensbron.
Overloads
| Name | Description |
|---|---|
| Refresh(RefreshMode, IEnumerable) |
Hiermee werkt u een verzameling objecten in de objectcontext bij met gegevens uit de gegevensbron. |
| Refresh(RefreshMode, Object) |
Hiermee werkt u een object in de objectcontext bij met gegevens uit de gegevensbron. |
Opmerkingen
De volgorde waarin objecten worden vernieuwd, is niet-deterministisch.
Refresh(RefreshMode, IEnumerable)
Hiermee werkt u een verzameling objecten in de objectcontext bij met gegevens uit de gegevensbron.
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)
Parameters
- refreshMode
- RefreshMode
Een RefreshMode waarde die aangeeft of eigenschapswijzigingen in de objectcontext worden overschreven met eigenschapswaarden uit de gegevensbron.
- collection
- IEnumerable
Een IEnumerable verzameling objecten die moeten worden vernieuwd.
Uitzonderingen
collection is null.
refreshMode is ongeldig.
Opmerkingen
Deze methode heeft het dubbele doel om objecten in de objectcontext te laten vernieuwen met gegevens uit de gegevensbron en het mechanisme waarmee conflicten kunnen worden opgelost. Zie Wijzigingen opslaan en Gelijktijdigheid beheren voor meer informatie.
De volgorde waarin objecten worden vernieuwd, is niet-deterministisch.
Nadat Refresh deze is aangeroepen, worden de oorspronkelijke waarden van het object altijd bijgewerkt met de gegevensbronwaarde, maar de huidige waarden worden mogelijk of niet bijgewerkt met de gegevensbronwaarde. Dit is afhankelijk van de RefreshMode waarde. De StoreWins modus betekent dat de objecten in de verzameling moeten worden bijgewerkt zodat deze overeenkomen met de gegevensbronwaarden. ClientWins betekent dat alleen de wijzigingen in de objectcontext behouden blijven, zelfs als er andere wijzigingen zijn aangebracht in de gegevensbron.
Om ervoor te zorgen dat objecten zijn bijgewerkt door logica aan de gegevensbronzijde, kunt u aanroepen nadat StoreWins u de SaveChanges methode hebt aangeroepenRefresh.
Zie ook
Van toepassing op
Refresh(RefreshMode, Object)
Hiermee werkt u een object in de objectcontext bij met gegevens uit de gegevensbron.
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)
Parameters
- refreshMode
- RefreshMode
Een van de RefreshMode waarden die aangeeft welke modus moet worden gebruikt voor het vernieuwen van de ObjectStateManager.
- entity
- Object
Het object dat moet worden vernieuwd.
Uitzonderingen
refreshMode is ongeldig.
Een object is niet gekoppeld aan de context.
Voorbeelden
In dit voorbeeld wordt geprobeerd wijzigingen op te slaan. Dit kan een gelijktijdigheidsconflict veroorzaken. Vervolgens ziet u hoe u het gelijktijdigheidsconflict kunt oplossen door de objectcontext te vernieuwen voordat u wijzigingen opnieuw opslaat.
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());
}
}
Opmerkingen
Refresh heeft het dubbele doel om een object te vernieuwen met gegevens uit de gegevensbron en het mechanisme te zijn waarmee conflicten kunnen worden opgelost. Zie Wijzigingen opslaan en Gelijktijdigheid beheren voor meer informatie.
De volgorde waarin objecten worden vernieuwd, is niet-deterministisch.
Nadat de Refresh methode is aangeroepen, worden de oorspronkelijke waarden van het object altijd bijgewerkt met de gegevensbronwaarde, maar de huidige waarden worden mogelijk wel of niet bijgewerkt met de gegevensbronwaarde. Dit hangt af van de RefreshMode. De StoreWins modus betekent dat het object moet worden bijgewerkt zodat het overeenkomt met de gegevensbronwaarden. De ClientWins waarde betekent dat alleen de wijzigingen in de objectcontext behouden blijven, zelfs als er andere wijzigingen zijn aangebracht in de gegevensbron.
Om ervoor te zorgen dat een object is bijgewerkt door logica aan de gegevensbronzijde, kunt u de Refresh methode aanroepen met de StoreWins waarde nadat u de SaveChanges methode hebt aangeroepen.