首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >异常处理EF Core 2.0

异常处理EF Core 2.0
EN

Stack Overflow用户
提问于 2018-08-29 15:58:55
回答 1查看 2.3K关注 0票数 0

我使用的是EF Core 2.0和Repository和Unit of Work模式。处理所有数据库异常的最佳方法是什么?我可以在我的commit方法中使用try/catch吗?

代码语言:javascript
复制
public void Commit()
{
    try
    {
        _context.SaveChanges();
    }
    catch (Exception ex)
    {
         //code
    }
}

除了SaveChanges()之外,还有什么东西可以抛出异常吗?下一步如何处理捕获到的异常?

EN

回答 1

Stack Overflow用户

发布于 2020-06-15 20:42:06

如果你看一下SaveChanges documentation,它表明SaveChanges只会抛出两种类型的异常:DbUpdateExceptionDbUpdateConcurrencyException。这些是特定于EF的异常,其内部异常将包含特定于提供程序的异常。

因此,你至少应该显式地捕捉它们,但如何处理它们取决于你……你至少应该在某一时刻记录下错误。一般的异常捕获块应该只用于真正意想不到的情况,但像网络关闭这样的情况并不是真正意想不到的。

另一个需要记住的例外是DbUpdateException,它是由EF提供程序(SqlServer、DB2等)实现的抽象类。据我所知,它将被BeginTransactionCommit等方法抛出……所以也许也能处理好这一点。很容易忘记,在连接断开时,这些其他方法也会抛出异常,而不仅仅是SaveChanges。

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

https://stackoverflow.com/questions/52072388

复制
相关文章

相似问题

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