ObjectContext.Refresh Metódus
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
Frissíti az objektumkörnyezet adott objektumait az adatforrásból származó adatokkal.
Túlterhelések
| Name | Description |
|---|---|
| Refresh(RefreshMode, IEnumerable) |
Frissíti az objektumkörnyezet objektumgyűjteményét az adatforrásból származó adatokkal. |
| Refresh(RefreshMode, Object) |
Frissíti az objektumkörnyezetben lévő objektumot az adatforrásból származó adatokkal. |
Megjegyzések
Az objektumok frissítésének sorrendje nem meghatározható.
Refresh(RefreshMode, IEnumerable)
Frissíti az objektumkörnyezet objektumgyűjteményét az adatforrásból származó adatokkal.
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)
Paraméterek
- refreshMode
- RefreshMode
Egy RefreshMode érték, amely azt jelzi, hogy az objektumkörnyezet tulajdonságváltozásai felülíródnak-e az adatforrás tulajdonságértékeivel.
- collection
- IEnumerable
Frissítendő IEnumerable objektumok gyűjteménye.
Kivételek
collection az null.
refreshMode érvénytelen.
Megjegyzések
Ennek a módszernek kettős célja, hogy lehetővé teszi az objektumkörnyezetben lévő objektumoknak az adatforrásból származó adatokkal való frissítését, és ez az a mechanizmus, amellyel feloldhatók az ütközések. További információ: Módosítások mentése és Egyidejűség kezelése.
Az objektumok frissítésének sorrendje nem meghatározható.
A meghívás után Refresh az objektum eredeti értékei mindig frissülnek az adatforrás értékével, de előfordulhat, hogy az aktuális értékek nem frissülnek az adatforrás értékével. Ez az RefreshMode értéktől függ. A StoreWins mód azt jelenti, hogy a gyűjtemény objektumait frissíteni kell az adatforrás értékeinek megfelelően. ClientWins azt jelenti, hogy csak az objektumkörnyezet módosításai maradnak meg, még akkor is, ha más változások is történtek az adatforrásban.
Annak érdekében, hogy az objektumok frissüljenek az adatforrásoldali logikávalRefresh, a metódus meghívása után hívhatja StoreWins meg.SaveChanges
Lásd még
A következőre érvényes:
Refresh(RefreshMode, Object)
Frissíti az objektumkörnyezetben lévő objektumot az adatforrásból származó adatokkal.
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)
Paraméterek
- refreshMode
- RefreshMode
Az egyik RefreshMode érték, amely meghatározza, hogy melyik módot használja a ObjectStateManagerfrissítéshez.
- entity
- Object
A frissíteni kívánt objektum.
Kivételek
refreshMode érvénytelen.
Egy objektum nincs csatolva a környezethez.
Példák
Ez a példa megpróbálja menteni a módosításokat, és ez egyidejűségi ütközést okozhat. Ezután bemutatja, hogyan oldhatja fel az egyidejűségi ütközést az objektumkörnyezet frissítésével a módosítások újbóli mentése előtt.
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());
}
}
Megjegyzések
Refresh kettős célja, hogy lehetővé teszi egy objektum frissítését az adatforrásból származó adatokkal, és ez az a mechanizmus, amellyel az ütközések feloldhatók. További információ: Módosítások mentése és Egyidejűség kezelése.
Az objektumok frissítésének sorrendje nem meghatározható.
A metódus meghívása Refresh után az objektum eredeti értékei mindig frissülnek az adatforrás értékével, de előfordulhat, hogy az aktuális értékek nem frissülnek az adatforrás értékével. Ez a RefreshMode. A StoreWins mód azt jelenti, hogy az objektumot frissíteni kell az adatforrás értékeinek megfelelően. Az ClientWins érték azt jelenti, hogy csak az objektumkörnyezet módosításai maradnak meg, még akkor is, ha az adatforrásban más változások is történtek.
Ha meg szeretné győződni arról, hogy egy objektumot adatforrásoldali logika frissített, meghívhatja a Refresh metódust az értékkel a StoreWins metódus meghívása SaveChanges után.