Partager via


ObjectContext.Refresh Méthode

Définition

Met à jour des objets spécifiques dans le contexte de l’objet avec des données de la source de données.

Surcharges

Nom Description
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é dans le contexte de l’objet sont remplacées par des 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.

collection est vide.

- ou -

Un objet n’est pas attaché au contexte.

Remarques

Cette méthode a pour objectif double d’autoriser l’actualisation des objets dans le contexte de l’objet avec les données de la source de données et le mécanisme par lequel les conflits peuvent être résolus.

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 RefreshMode valeur. 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 dans le contexte de l’objet sont conservées, même si d’autres modifications ont été apportées à la source de données.

Pour vous assurer que les objets ont été mis à jour par la logique côté source de données, vous pouvez appeler Refresh avec StoreWins une fois que vous appelez la SaveChanges méthode.

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

Une des RefreshMode valeurs qui spécifie le mode à utiliser pour actualiser le ObjectStateManager.

entity
Object

Objet à actualiser.

Exceptions

refreshMode n’est pas valide.

Un objet n’est pas attaché au contexte.

Exemples

Cet exemple tente d’enregistrer les modifications, ce qui peut entraîner un conflit d’accès concurrentiel. Il montre ensuite comment résoudre le conflit d’accès concurrentiel en actualisant le contexte de l’objet avant de réinscrire 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 a l’objectif double de permettre à un objet d’être actualisé avec les données de la source de données et d’être le mécanisme par lequel les conflits peuvent être résolus.

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 ne pas être mises à jour avec la valeur de la source de données. Cela dépend du RefreshMode. Le StoreWins mode signifie que l’objet doit être mis à jour pour correspondre aux valeurs de la source de données. La ClientWins valeur signifie que seules les modifications dans le contexte de l’objet sont conservées, même si d’autres modifications ont été apportées à la source de données.

Pour vous assurer qu’un objet a été mis à jour par la logique côté source de données, vous pouvez appeler la méthode avec la RefreshStoreWins valeur après avoir appelé la SaveChanges méthode.

Voir aussi

S’applique à