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í.
Aktualizace konkrétní objekty v kontextu objektu s daty ze zdroje dat.
Přetížení
Refresh(RefreshMode, IEnumerable) |
Aktualizace kolekci objektů v kontextu objektu s daty ze zdroje dat. |
Refresh(RefreshMode, Object) |
Aktualizace objektu v kontextu objektu s daty ze zdroje dat. |
Poznámky
Pořadí, ve kterém se objekty aktualizují, je nedeterministické.
Refresh(RefreshMode, IEnumerable)
Aktualizace kolekci objektů v kontextu objektu s 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 jsou změny vlastností v kontextu objektu přepsány hodnotami vlastností ze zdroje dat.
- collection
- IEnumerable
Kolekce IEnumerable objektů, které se mají aktualizovat.
Výjimky
collection
je null
.
refreshMode
není platný.
Poznámky
Tato metoda má dvojí účel: umožňuje, aby objekty v kontextu objektu byly aktualizovány daty 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í o hodnotu 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 pomocí StoreWins příkazu .
Viz také
Platí pro
Refresh(RefreshMode, Object)
Aktualizace objektu v kontextu objektu s 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, který režim se má použít pro 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žňuje aktualizaci objektu daty 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 zavolání Refresh metody se původní hodnoty objektu vždy aktualizují o hodnotu 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, i když ve zdroji dat došlo k jiným změnám.
Chcete-li zajistit, aby byl objekt aktualizován logikou na straně zdroje dat, můžete po volání metody volat metodu RefreshSaveChanges s StoreWins hodnotou.
Viz také
Platí pro
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro