1

我做了第一个 SaveChanges 和苍蝇异常 (UpdateException)。我做了第二个 SaveChanges 并再次执行第一个错误。该怎么办

bool isUpdate = false;
var resource = new Resource() { url = tbUrl.Text };
//block1
try
{
    context.Resource.AddObject(resource);
    context.SaveChanges();
    isUpdate = true;
}
catch (UpdateException ex)
{

}

//block2
if (!isUpdate)
{
    resource = (from res in context.Resource where res.url == tbUrl.Text select res).First();
    context.NameToResourcer.AddObject(new NameToResourcer()
                    {
                        id_resource = resource.id,
                        name = tag
                    });
    context.SaveChanges();//error!
}
4

1 回答 1

2

您的调用SaveChanges应包含在事务中。通常使用TransactionScope. 然后,如果对 SaveChanges 的调用之一失败,您可以回滚事务。


编辑:

有关一些示例,请参阅以下 2 个 MSDN 页面:

System.Transactions.TransactionScope 类

如何:在实体框架中管理事务

于 2011-07-12T20:17:58.183 回答