Solución:
Para solucionar este error, podemos ajustar el SaveChanges()
método de DatabaseContext
objeto en try
bloque y en el Catch
recorrer cada error para averiguar dónde está el error. El código va a continuación.
try
{
db.SaveChanges();
}
catch (DbEntityValidationException ex)
{
foreach (var entityValidationErrors in ex.EntityValidationErrors)
{
foreach (var validationError in entityValidationErrors.ValidationErrors)
{
Response.Write("Property: " + validationError.PropertyName + " Error: " + validationError.ErrorMessage);
}
}
}
Una vez que se encuentra el error, puede trabajar en eso para solucionarlo. Espero que esto ayude.
Hay algún tipo de validación de la base de datos que le impide escribir los datos en ella.
La solución ya está indicada en esta página:
Error de validación para una o más entidades. Consulte la propiedad ‘EntityValidationErrors’ para obtener más detalles
Como nota adicional a esto, ya que está usando .net mvc, debe usar System.Diagnostics.Debug.WriteLine () en lugar de Console.Writeline () y esto se escribirá en la ventana de salida de depuración cuando esté depurando. Como no puede escribir en la consola cuando ejecuta un proyecto mvc.
Puede anular el SaveChanges
, para manejar esta excepción y proporcionar mejores detalles de la excepción.
Puede crear una clase “siguiente” a su clase de contexto … el código completo para esa clase es el siguiente:
using System.Data.Entity;
using System.Data.Entity.Validation;
using System.Linq;
namespace MyNamespace
{
public partial class MyContext : DbContext
{
// Override base SaveChanges to expand out validation errors so client gets an actually helpful message
public override int SaveChanges()
{
try
{
return base.SaveChanges();
}
catch (DbEntityValidationException ex)
{
// Retrieve the error messages as a list of strings.
var errorMessages = ex.EntityValidationErrors
.SelectMany(x => x.ValidationErrors)
.Select(x => x.ErrorMessage);
// Join the list to a single string.
var fullErrorMessage = string.Join("; ", errorMessages);
// Combine the original exception message with the new one.
var exceptionMessage = string.Concat(ex.Message, " The validation errors are: ", fullErrorMessage);
// Throw a new DbEntityValidationException with the improved exception message.
throw new DbEntityValidationException(exceptionMessage, ex.EntityValidationErrors);
}
}
}
}
Consulte esto para obtener más información: http://devillers.nl/blog/improving-dbentityvalidationexception/