Question

J'ai un LINQ to SQL contexte des changements dans un EntitySet. Je veux me débarrasser de tous les changements que j'apportées depuis mon dernier appelé SubmitChanges(). J'utilise la méthode suivante pour rétablir l'état du contexte:

public static void RevertChanges(this DataContext context)
{
    var changeSet = context.GetChangeSet();
    var inserts = changeSet.Inserts.ToList();
    var deleteAndUpdate = changeSet.Deletes.Concat(changeSet.Updates).ToList();

    foreach (var inserted in inserts)
    {
        var table = context.GetTable(inserted.GetType());   
        table.DeleteOnSubmit(inserted);
    }

    if (deleteAndUpdate.Count > 0)
    {
        context.Refresh(RefreshMode.OverwriteCurrentValues, deleteAndUpdate);
    }
}

Cela fonctionne bien, sauf qu'un EntitySet basé sur la table ne soit pas rafraîchi, et maintient les changements en elle.

Quelle est la meilleure façon de rejeter les modifications dans un EntitySet?

Était-ce utile?

La solution

La meilleure façon?

using (DataContext dc = new DataContext)
{

}

Il est le seul moyen d'être sûr.

Une deuxième meilleure option serait de créer un nouveau EntitySet et l'affecter à la propriété -. Même se fait dans le fichier designer.cs

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top