Revenant changements à un EntitySet dans LINQ to SQL
-
02-10-2019 - |
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
?
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