如何处理System.Data.Entity.Validation.DbEntityValidationException

How to handle System.Data.Entity.Validation.DbEntityValidationException

我写了这个简单的代码来更新我的数据库列。

            using (HRMSEntities context = new HRMSEntities())
        {
            TBL_EMPLOYEE dataTicketInsert = new TBL_EMPLOYEE();
            dataTicketInsert = context.TBL_EMPLOYEE.Where(x => x.Id == inputEmployeeID).FirstOrDefault();
            dataTicketInsert.Ticket = ticketT;
            context.SaveChanges();
        }

错误信息: 'System.Data.Entity.Validation.DbEntityValidationException' 类型的异常发生在 EntityFramework.dll 中,但未在用户代码中处理 附加信息:一个或多个实体的验证失败。有关详细信息,请参阅 'EntityValidationErrors' 属性。

我该如何解决这个问题?

将以下代码添加到您的 DbContext class,然后在验证错误消息中,您将能够看到验证问题的详细信息:

public override int SaveChanges()
{
        try
        {
            return base.SaveChanges();
        }
        catch (DbEntityValidationException ex)
        {
            var errorMessages = ex.EntityValidationErrors
                    .SelectMany(x => x.ValidationErrors)
                    .Select(x => x.ErrorMessage);

            var fullErrorMessage = string.Join("; ", errorMessages);

            var exceptionMessage = string.Concat(ex.Message, " The validation errors are: ", fullErrorMessage);

            throw new DbEntityValidationException(exceptionMessage, ex.EntityValidationErrors);
        }
 }

参考: