我有一段try catch代码:
try
{
...
}
catch(Exception ex)
{
ModelState.AddModelError(
"duplicateInvoiceNumberOrganisation", "The combination of organisation and invoice number must be unique");
}
对于这段代码,我试图将记录插入数据库:dba对其进行了设置,以便数据库检查重复项,如果存在重复项,则返回错误。如您所见,当前,无论发生什么错误,我都将相同的错误添加到模型中。我希望它已更改,因此,如果该错误是由dba设置的重复错误引起的,则仅将其添加到模型中。
以下是我要捕获的错误。请注意,这是内部异常。谁能告诉我如何特别抓到这个?
最佳答案
在您当前捕获的之前的中添加以下内容:catch(DbUpdateException ex)
{
if(ex.InnerException is UpdateException)
{
// do what you want with ex.InnerException...
}
}
在C#6中,您可以执行以下操作:catch(DbUpdateException ex) when (ex.InnerException is UpdateException)
{
// do what you want with ex.InnerException...
}