ObjectContext.Refresh Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Aktualizuje konkrétní objekty v kontextu objektu daty ze zdroje dat.
Přetížení
| Name | Description |
|---|---|
| Refresh(RefreshMode, IEnumerable) |
Aktualizuje kolekci objektů v kontextu objektu daty ze zdroje dat. |
| Refresh(RefreshMode, Object) |
Aktualizuje objekt v kontextu objektu daty ze zdroje dat. |
Poznámky
Pořadí, ve kterém jsou objekty aktualizovány, je nedeterministické.
Refresh(RefreshMode, IEnumerable)
Aktualizuje kolekci objektů v kontextu objektu daty ze zdroje dat.
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)
Parametry
- refreshMode
- RefreshMode
Hodnota RefreshMode , která označuje, zda se změny vlastností v kontextu objektu přepíšou hodnotami vlastností ze zdroje dat.
- collection
- IEnumerable
IEnumerable Kolekce objektů, které se mají aktualizovat.
Výjimky
collection je null.
refreshMode není platný.
Poznámky
Tato metoda má dvojí účel, který umožňuje, aby objekty v kontextu objektu byly aktualizovány daty ze zdroje dat a mechanismus, pomocí kterého lze konflikty vyřešit.
Pořadí, ve kterém jsou objekty aktualizovány, je nedeterministické.
Po Refresh zavolání budou původní hodnoty objektu vždy aktualizovány hodnotou zdroje dat, ale aktuální hodnoty mohou nebo nemusí být aktualizovány hodnotou zdroje dat. To závisí na hodnotě RefreshMode . Režim StoreWins znamená, že objekty v kolekci by se měly aktualizovat tak, aby odpovídaly hodnotám zdroje dat. ClientWins znamená, že se zachovají pouze změny v kontextu objektu, a to i v případě, že došlo k jiným změnám ve zdroji dat.
Chcete-li zajistit, aby byly objekty aktualizovány logikou na straně zdroje dat, můžete RefreshStoreWins zavolat po volání SaveChanges metody.
Viz také
Platí pro
Refresh(RefreshMode, Object)
Aktualizuje objekt v kontextu objektu daty ze zdroje dat.
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)
Parametry
- refreshMode
- RefreshMode
Jedna z RefreshMode hodnot, které určují režim, který se má použít pro aktualizaci ObjectStateManager.
- entity
- Object
Objekt, který se má aktualizovat.
Výjimky
refreshMode není platný.
Objekt není připojen k kontextu.
Příklady
Tento příklad se pokusí uložit změny a to může způsobit konflikt souběžnosti. Pak ukazuje, jak vyřešit konflikt souběžnosti aktualizací kontextu objektu před opětovným uložením změn.
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());
}
}
Poznámky
Refresh má dvojí účel povolení aktualizace objektu dat ze zdroje dat a mechanismus, pomocí kterého lze konflikty vyřešit.
Pořadí, ve kterém jsou objekty aktualizovány, je nedeterministické.
Refresh Po zavolání metody budou původní hodnoty objektu vždy aktualizovány hodnotou zdroje dat, ale aktuální hodnoty mohou nebo nemusí být aktualizovány hodnotou zdroje dat. To závisí na RefreshMode. Režim StoreWins znamená, že objekt by se měl aktualizovat tak, aby odpovídal hodnotám zdroje dat. Hodnota ClientWins znamená, že se zachovají pouze změny v kontextu objektu, i když ve zdroji dat došlo k jiným změnám.
Chcete-li zajistit, aby objekt byl aktualizován logikou na straně zdroje dat, můžete metodu StoreWins zavolat Refresh s hodnotou po volání SaveChanges metody.