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?

È stato utile?

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
scroll top