【问题标题】:Error while inserting duplicate records插入重复记录时出错
【发布时间】:2016-07-19 19:20:58
【问题描述】:

我有这段代码要提交

 public RetornoDTO Commit(EfDbContext _context)
    {
        string erroValidation = String.Empty;
        try
        {
            _context.SaveChanges();
        }

        catch (DbEntityValidationException e)
        {
            foreach (var eve in e.EntityValidationErrors)
            {
                var erro =
                    string.Format("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:",
                        eve.Entry.Entity.GetType().Name, eve.Entry.State);

                Logger.GetInstance().Erro(erro);
                foreach (var ve in eve.ValidationErrors)
                {
                    erroValidation = string.Format("- Property: \"{0}\", Error: \"{1}\"",
                        ve.PropertyName, ve.ErrorMessage);
                    Logger.GetInstance().Erro(erroValidation);
                }
            }
            return new RetornoDTO
            {
                Sucesso = false,
                Mensagem = "Error - Erro " + erroValidation
            };
        }
        return new RetornoDTO { Sucesso = true, Mensagem = "Changes saved!!!" };
    }

但是当我尝试插入重复记录时,catch 语句不起作用,我收到此错误:

无法在具有唯一索引“IX_NomeClienteDoCliente”的对象“dbo.ClienteDoCliente”中插入重复的键行。重复的键值为 (Cliente Name Test)。 该语句已终止。

Linha 30:             try
Linha 31:             {
Linha 32:                 _context.SaveChanges();
Linha 33:             }
Linha 34:             catch (DbEntityValidationException e)

我需要更改什么以避免出现此消息?

【问题讨论】:

  • 您正在尝试保存具有唯一约束的数据。更改您插入的数据
  • 是的,我希望代码不显示堆栈错误,而是显示自定义错误并将错误记录在数据库中。

标签: c# asp.net-mvc entity-framework


【解决方案1】:

你的捕获只是捕获DbEntityValidationException。插入重复记录不是 DbEntityValidationException,而是另一个异常。

您需要为这种异常(或全部捕获)添加进一步的catch,或者如果您当前的捕获代码是针对此问题的,请更正您正在捕获的异常。

您收到的错误消息可能会说明重复记录的确切异常;如果没有,您可以尝试在手册中找到它,或者捕获更高级别的异常并在调试器中检查确切的异常是什么。

【讨论】:

    猜你喜欢
    • 2017-05-13
    • 2021-06-29
    • 1970-01-01
    • 2017-11-03
    • 2021-03-31
    • 1970-01-01
    • 2018-11-21
    • 2023-03-19
    • 2015-03-31
    相关资源
    最近更新 更多