Как откатить текст данных до точки последних изменений - PullRequest
2 голосов
/ 15 мая 2009

Я работаю над приложением, которое вставляет много новых объектов (строк) и связей между ними. Но в определенный момент, когда происходит ошибка, я хочу, чтобы все изменения в DataContext игнорировались и «выбрасывались». Чтобы после ошибки у меня была чистая копия DataContext, которая соответствует состоянию базы данных.

Ответы [ 2 ]

1 голос
/ 15 мая 2009

Вы также можете использовать TransactionScope в операторе использования. Если вы не вызываете .Complete () для TransactionScope, все изменения будут отменены при его удалении (что происходит при выходе из оператора using).

1 голос
/ 15 мая 2009

Редактировать

Кроме того, вы можете использовать DataContext.Transaction и использовать его для .Commit() или .Rollback() ваших изменений.

ORIG

Просто выбросьте этот DataContext и создайте его заново.

Что-то вроде ...

public void MyMethod(string connStr)
{
    try
    {
        DataClasses1DataContext dc = new DataClasses1DataContext(connStr);
        for (int i = 0; i < 100; i++)
        {
            try
            {
                //Do Stuff
                //Insert Objects
                dc.SubmitChanges();
            }
            catch (Exception ex) //So if it bombs in the loop, log your exception
            {
                Log(ex);
            }
            finally //Reinstantiate your DC
            {
                dc = new DataClasses1DataContext(connStr);
            }
        }
    }
    catch (Exception bigEx)
    {
        Log(bigEx);
    }
}
...