我正在开发一个插入很多新对象(行)和它们之间关系的应用程序。但是在发生错误的某个时刻,我希望对DataContext的所有更改都被拒绝并“丢弃”。因此,在出错之后,我有一个与数据库状态匹配的DataContext的干净副本。
答案 0 :(得分:1)
修改强>
或者,您可以使用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);
}
}
答案 1 :(得分:1)
您还可以在using语句中使用TransactionScope。如果您没有在TransactionScope上调用.Complete(),则所有更改在处理时都会回滚(在离开using语句时会发生这种更改)。