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