ObjectContext.Refresh Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Met à jour des objets spécifiques dans le contexte de l'objet avec des données de la source de données.
Surcharges
Refresh(RefreshMode, IEnumerable) |
Met à jour une collection d'objets dans le contexte de l'objet avec des données de la source de données. |
Refresh(RefreshMode, Object) |
Met à jour un objet dans le contexte de l'objet avec des données de la source de données. |
Remarques
L'ordre dans lequel les objets sont actualisés est non déterministe.
Refresh(RefreshMode, IEnumerable)
Met à jour une collection d'objets dans le contexte de l'objet avec des données de la source de données.
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ètres
- refreshMode
- RefreshMode
Valeur RefreshMode qui indique si les modifications de propriétés dans le contexte de l'objet sont remplacées par les valeurs de propriété de la source de données.
- collection
- IEnumerable
Collection IEnumerable d’objets à actualiser.
Exceptions
collection
a la valeur null
.
refreshMode
n'est pas valide.
Remarques
Cette méthode permet d'actualiser les objets dans le contexte de l'objet avec les données de la source de données et constitue le mécanisme par lequel les conflits peuvent être résolus. Pour plus d’informations, consultez Enregistrement des modifications et Gestion de la concurrence.
L'ordre dans lequel les objets sont actualisés est non déterministe.
Une fois Refresh appelées, les valeurs d’origine de l’objet sont toujours mises à jour avec la valeur de la source de données, mais les valeurs actuelles peuvent ou non être mises à jour avec la valeur de la source de données. Cela dépend de la valeur de RefreshMode. Le StoreWins mode signifie que les objets de la collection doivent être mis à jour pour correspondre aux valeurs de la source de données. ClientWins signifie que seules les modifications apportées au contexte de l’objet seront conservées, même s’il y a eu d’autres modifications dans la source de données.
Pour vous assurer que les objets ont été mis à jour par la logique de la source de données, vous pouvez appeler Refresh avec StoreWins après avoir appelé la méthode SaveChanges.
Voir aussi
S’applique à
Refresh(RefreshMode, Object)
Met à jour un objet dans le contexte de l'objet avec des données de la source de données.
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ètres
- refreshMode
- RefreshMode
L'une des valeurs RefreshMode qui spécifie le mode à utiliser pour l'actualisation de l'objet ObjectStateManager.
- entity
- Object
Objet à actualiser.
Exceptions
collection
a la valeur null
.
refreshMode
n'est pas valide.
Exemples
Cet exemple tente d’enregistrer les modifications, ce qui peut entraîner un conflit d’accès concurrentiel. Ensuite, il montre comment résoudre le conflit d'accès concurrentiel en actualisant le contexte de l'objet avant de réenregistrer les modifications.
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());
}
}
Remarques
Refresh permet d'actualiser un objet avec les données de la source de données et constitue le mécanisme par lequel les conflits peuvent être résolus. Pour plus d’informations, consultez Enregistrement des modifications et Gestion de la concurrence.
L'ordre dans lequel les objets sont actualisés est non déterministe.
Une fois la Refresh méthode appelée, les valeurs d’origine de l’objet sont toujours mises à jour avec la valeur de la source de données, mais les valeurs actuelles peuvent ou non être mises à jour avec la valeur de la source de données. Cela dépend de l'objet RefreshMode. Le mode StoreWins signifie que l'objet doit être mis à jour de façon à correspondre aux valeurs de la source de données. La valeur ClientWins signifie que seules les modifications dans le contexte de l'objet sont rendues persistantes, même s'il y a eu d'autres modifications dans la source de données.
Pour vous assurer qu'un objet a été mis à jour par la logique de la source de données, vous pouvez appeler la méthode Refresh avec la valeur StoreWins après avoir appelé la méthode SaveChanges.