Validation failed for one or more entities. See 'EntityValidationErrors' property for more details. Code First

后端 未结 2 1525
你的背包
你的背包 2020-12-24 03:55

I get this error:

Validation failed for one or more entities. See \'EntityValidationErrors\' property for more details.

when i try to updat

相关标签:
2条回答
  • 2020-12-24 04:29

    I don't know why writing to the VS output window doesn't work and how to make it work. But as a last resort just write the errors into a text file which should work independent of the type of application you have:

    try
    {
        context.SaveChanges();
    }
    catch (System.Data.Entity.Validation.DbEntityValidationException e)
    {
        var outputLines = new List<string>();
        foreach (var eve in e.EntityValidationErrors)
        {
            outputLines.Add(string.Format(
                "{0}: Entity of type \"{1}\" in state \"{2}\" has the following validation errors:",
                DateTime.Now, eve.Entry.Entity.GetType().Name, eve.Entry.State));
            foreach (var ve in eve.ValidationErrors)
            {
                outputLines.Add(string.Format(
                    "- Property: \"{0}\", Error: \"{1}\"",
                    ve.PropertyName, ve.ErrorMessage));
            }
        }
        //Write to file
        System.IO.File.AppendAllLines(@"c:\temp\errors.txt", outputLines);
        throw;
    
        // Showing it on screen
        throw new Exception( string.Join(",", outputLines.ToArray()));
    
    }
    
    0 讨论(0)
  • 2020-12-24 04:46

    You can pass it up the exception stack like below.

    try
    {
        _dbContext.SaveChanges();
    }
    catch (DbEntityValidationException dbValEx)
    {
       var outputLines = new StringBuilder();
       foreach (var eve in dbValEx.EntityValidationErrors)
       {
         outputLines.AppendFormat("{0}: Entity of type \"{1}\" in state \"{2}\" has the following validation errors:"
           ,DateTime.Now, eve.Entry.Entity.GetType().Name, eve.Entry.State);
    
         foreach (var ve in eve.ValidationErrors)
         {
           outputLines.AppendFormat("- Property: \"{0}\", Error: \"{1}\""
            ,ve.PropertyName, ve.ErrorMessage);
         }
       }
    
     throw new DbEntityValidationException(string.Format("Validation errors\r\n{0}"
      ,outputLines.ToString()), dbValEx);
    }
    
    0 讨论(0)
提交回复
热议问题