首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >EF6。回滚事务后将异常信息保存到数据库中

EF6。回滚事务后将异常信息保存到数据库中
EN

Stack Overflow用户
提问于 2020-01-09 20:45:31
回答 1查看 311关注 0票数 0

我需要将有关异常的信息保存到数据库中。

i.e

代码语言:javascript
复制
SomeMethod() 
{
    try 
    {
         using(transaction = context.beginTransaction())
         {
             try 
             {
                 // here is the database error
                 await transaction.CommitAsync();
             } 
             catch(Exception e)
             {
                 await transaction.Rollback();
                 throw;
             }
         } 
    }
    catch(Exception exception) 
    {
        // Here I get the same error that was generated inside the transaction
        context.Set<LogEntity>().Add(new LogEntity(....));
        await context.SaveChangesAsync();
    } 
}

我是否正确地理解了上下文是到数据库的连接,并且在一个上下文中我可以执行几个事务?

据我所知,这个阶段的背景是处于肮脏的状态吗?

如何在发生事务错误后写入数据库?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-09 22:23:34

,据我所知,这个阶段的上下文处于肮脏的状态吗?

对,是这样。“数据库错误”一定是在SaveChanges(Async)调用中发生的,所以如果您在相同的上下文中重复调用,异常将再次发生。补救方法很简单:在catch块中使用新的上下文。

附带注意:捕获using块中的异常是不必要的。如果事务在被释放之前没有提交,它将被回滚。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59671838

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档