【发布时间】: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