如何处理数据访问层中的dbupdate异常

时间:2013-11-01 10:10:23

标签: asp.net-mvc exception

你好我是mvc的新手,所以我在数据库更新期间遇到了问题。我在数据库中有一个表,其中列被定义为唯一键,这意味着我不希望该列中的数据相同,但在输入相同数据时,我的数据访问层类会生成一个名为DbUpdate异常的异常。我只想通过发送消息“您的给定数据已存在”来处理此异常..请帮助我。提前完成。

1 个答案:

答案 0 :(得分:1)

通常,您的想法是想要引发对每个层都有意义的自定义异常。这样做的原因是因为你想保留你的DAL摘要,例如,在你的DAL中你会捕获这个特殊的异常(DbUpdateException)并引发你自己的自定义异常,例如。

try
{
    ...
    myContext.SaveChanges();
}
catch (DbUpdateException ex)
{
    throw new DuplicateDataException("Data already exists");
}

然后在您的业务层中,如果您想进一步抽象,可以抛出异常

try
{
    dataStore.Save(new Entity { ... });
}
catch (DuplicateDataException ex)
{
    throw new DomainException(ex.Message);
}

然后最后在你的控制器中,将错误传递给视图

[HttpPost]
public ActionResult SomeAction(SomeModel model)
{
    try
    {
        myDomain.Save(model);
        return View("Success", model);
    }
    catch (DomainException ex)
    {
        return View("Error", ex.Message);
    }
}

该示例当然完全是虚构的,可能适用于或不适用于您的特定代码库,但目标是演示异常如何从DAL层有效地“冒泡”回到您的UI。

我特别强调使用自定义异常,因为它为您提供了一个很好的清晰抽象。