Ripristino modifiche a un'EntitySet in LINQ to SQL
-
02-10-2019 - |
Domanda
Ho un contesto LINQ to SQL con i cambiamenti in un EntitySet. Voglio sbarazzarsi di tutti i cambiamenti che ho fatto ad esso dall'ultima volta che ho chiamato SubmitChanges()
. Uso il seguente metodo per ripristinare lo stato del contesto:
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);
}
}
Questo funziona bene, eccetto che una EntitySet
basato sulla tabella non viene aggiornata, e mantiene i cambiamenti in esso.
Qual è il modo migliore per respingere le modifiche in un EntitySet
?
Soluzione
Il modo migliore?
using (DataContext dc = new DataContext)
{
}
E 'l'unico modo per essere sicuri.
Una seconda opzione migliore sarebbe quella di nuovo di un EntitySet e assegnarlo alla proprietà -. Allo stesso modo è fatto nel file designer.cs
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow