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

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.

collection est vide.

- ou -

Un objet n'est pas attaché au contexte.

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 l’accès concurrentiel.

L'ordre dans lequel les objets sont actualisés est non déterministe.

Une fois Refresh que est appelé, les valeurs d’origine de l’objet sont toujours mises à jour avec la valeur de source de données, mais les valeurs actuelles peuvent ou non être mises à jour avec la valeur de 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 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 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.

collection est vide.

- ou -

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. 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 l’accès concurrentiel.

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 source de données, mais les valeurs actuelles peuvent ou non être mises à jour avec la valeur de 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.

Voir aussi

S’applique à