2

我正在开发一个应用程序,该应用程序插入了许多新对象(行)和它们之间的关系。但是在某个错误发生时,我希望对 DataContext 的所有更改都被忽略并“丢弃”。这样在发生错误后,我就有了与数据库状态匹配的 DataContext 的干净副本。

4

2 回答 2

1

编辑

或者,您可以使用 DataContext.Transaction,并将其用于.Commit().Rollback()您的更改。

原创

只需丢弃该 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);
    }
}
于 2009-05-15T08:15:57.107 回答
1

您还可以在 using 语句中使用 TransactionScope。如果您不在 TransactionScope 上调用 .Complete() ,则所有更改在处理时都会回滚(这在离开 using 语句时发生)。

于 2009-05-15T10:23:15.273 回答