J'ai un contexte Linq-to-SQL avec des modifications dans un EntitySet. Je veux me débarrasser de tous les changements que j'ai faits depuis que j'ai appelé SubmitChanges()
. J'utilise la méthode suivante pour revenir l'état du contexte:Rétablissement des modifications d'un EntitySet <T> dans Linq-to-SQL
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 reçoivent pas rafraîchi, et maintient les changements en elle.
Quelle est la meilleure façon de rejeter les modifications dans un EntitySet
?
Pouce. Ceci est difficile en raison de la façon dont le DataContext est utilisé. Je cherche un moyen d'éviter cela. – codekaizen
Salut, merci pour la 2ème option - ça a l'air prometteur. Comment rafraîchir les entités dans l'EntitySet après que je l'ai recréé? – codekaizen
Ok, je l'ai résolu en émettant une requery sur le contexte et en remplissant l'EntitySet manuellement. – codekaizen