我需要将有关异常的信息保存到数据库中。
i.e
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();
}
}我是否正确地理解了上下文是到数据库的连接,并且在一个上下文中我可以执行几个事务?
据我所知,这个阶段的背景是处于肮脏的状态吗?
如何在发生事务错误后写入数据库?
发布于 2020-01-09 22:23:34
,据我所知,这个阶段的上下文处于肮脏的状态吗?
对,是这样。“数据库错误”一定是在SaveChanges(Async)调用中发生的,所以如果您在相同的上下文中重复调用,异常将再次发生。补救方法很简单:在catch块中使用新的上下文。
附带注意:捕获using块中的异常是不必要的。如果事务在被释放之前没有提交,它将被回滚。
https://stackoverflow.com/questions/59671838
复制相似问题