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í
Refresh(RefreshMode, IEnumerable) |
Aktualizuje kolekci objektů v kontextu objektu pomocí dat ze zdroje dat. |
Refresh(RefreshMode, Object) |
Aktualizuje objekt v kontextu objektu daty ze zdroje dat. |
Poznámky
Pořadí, ve kterém se objekty aktualizují, je nedeterministické.
Refresh(RefreshMode, IEnumerable)
Aktualizuje kolekci objektů v kontextu objektu pomocí dat 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 změny vlastnosti v kontextu objektu jsou přepsány hodnotami vlastností ze zdroje dat.
- collection
- IEnumerable
Kolekce IEnumerable objektů k aktualizaci.
Výjimky
collection
je null
.
refreshMode
není platný.
Poznámky
Tato metoda má dvojí účel – umožnit objektům v kontextu objektu aktualizovat data ze zdroje dat a je mechanismem, pomocí kterého lze konflikty vyřešit. Další informace najdete v tématech Ukládání změn a Správa souběžnosti.
Pořadí, ve kterém se objekty aktualizují, je nedeterministické.
Po Refresh zavolání se původní hodnoty objektu vždy aktualizují hodnotou zdroje dat, ale aktuální hodnoty se můžou nebo nemusí aktualizovat hodnotou zdroje dat. To závisí na hodnotě RefreshMode . Režim StoreWins znamená, že objekty v kolekci by měly být aktualizovány 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 ve zdroji dat došlo k jiným změnám.
Pokud chcete zajistit, aby objekty byly aktualizovány logikou na straně zdroje dat, můžete po volání metody volat Refresh metodu SaveChanges .StoreWins
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čuje režim, který se má použít k aktualizaci .ObjectStateManager
- entity
- Object
Objekt, který se má aktualizovat.
Výjimky
collection
je null
.
refreshMode
není platný.
Příklady
Tento příklad se pokusí uložit změny, což 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– umožnit aktualizaci objektu pomocí dat ze zdroje dat a představuje mechanismus, pomocí kterého lze konflikty vyřešit. Další informace najdete v tématech Ukládání změn a Správa souběžnosti.
Pořadí, ve kterém se objekty aktualizují, je nedeterministické.
Po zavolání Refresh metody se původní hodnoty objektu vždy aktualizují 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 měl být aktualizován tak, aby odpovídal hodnotám zdroje dat. Hodnota ClientWins znamená, že se zachovají pouze změny v kontextu objektu, a to i v případě, že ve zdroji dat došlo k jiným změnám.
Pokud chcete zajistit, aby byl objekt aktualizován logikou na straně zdroje dat, můžete po volání SaveChanges metody volat metodu StoreWinsRefresh s hodnotou .