[asp.net]在 EF6 来更改邮件,更方便用户捕获并发异常

发布时间: 2017/3/26 3:53:03
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我使用的 EF6.1 和我想要将邮件更改为更多的系统特定消息时以下异常抛出。

存储更新、 插入或删除语句影响行 (0) 意外的的数

现在,我的问题是我似乎无法捕获的异常? 我试过下面,但我的断点似乎从未抓住

public override System.Threading.Tasks.Task<int> SaveChangesAsync()
{
    try
    {
        return base.SaveChangesAsync();
    }
    catch (System.Data.Entity.Core.OptimisticConcurrencyException e)
    {
        var a = e.Message;
    }
    catch (System.Data.DBConcurrencyException e)
    {
        var a = e.Message;
    }
    catch (Exception e)
    {
        var a = e.Message;
    }

    return null;
}

它不是引发异常?? 这就奇怪了

解决方法 1:

你正在执行的异步方法。这意味着当您调用时将引发的任何异常 await 返回任务或当您尝试检索结果使用await myTask;

你永远不会这样做,这就意味着,异常并抓住高你调用堆栈。

如果你想要捕捉的异常在您自己的方法,你应该改变其语法

public override async System.Threading.Tasks.Task<int> SaveChangesAsync()
{
    try
    {
        return await base.SaveChangesAsync();
    }

我会非常谨慎,当重写 SaveChangesAsync 虽然。OptimisticConcurrencyException异常包含导致乐观冲突的数据其 StateEntries 属性。它替换好消息只将很难决定如何处理一个特定的错误,例如,决定改写或重新加载。

显示很好的消息是最好的东西留给您的控制器。

官方微信
官方QQ群
31647020