Tengo la situación en la que estoy inicializando mi modelo en DatabaseInitializer () para EF 4.1 y obtengo este error molesto. "Validation failed for one or more entities. See 'EntityValidationErrors' property for more details."
Entonces, voy a este EntityValidationErrors y hay un campo {System.Data.Entity.Validation.DbEntityValidationResult}
que no me da ninguna información sobre qué campo no pudo inicializar . ¿Hay alguna manera de obtener más información sobre este error?
Para aclarar las cosas:
Sé cómo solucionar el problema de la longitud de la cadena. Lo que pregunto es cómo obtengo el nombre exacto del campo que está rompiendo el modelo.
ex
con$exception
y obtener el mismo resultado.ex
con w / e yourcatch (Exception THIS)
isSystem.Linq.Enumerable.ToList(System.Linq.Enumerable.ToList(((System.Data.Entity.Validation.DbEntityValidationException)$exception).EntityValidationErrors)[0].ValidationErrors)[0].ErrorMessage
¿Podrías probar esto en un bloque try / catch?
fuente
La mejor solución en mi opinión, es manejar este tipo de errores de manera centralizada.
simplemente agregue este método a la
DbContext
clase principal :Esto sobrescribirá el
SaveChanges()
método de su contexto y obtendrá una lista separada por comas que contiene todos los errores de validación de la entidad.Espero que esto sea útil.
fuente
Bueno, tuve el mismo problema. Mi modelo funcionó bien en EF CTP5, pero no se pudo compilar en 4.1 con el mismo error "" Error de validación para una o más entidades "cuando intenté inicializarlo. Descubrí que tenía propiedades:
Luego, en el método de inicialización en el inicializador anulado, tuve un comentario bastante largo (alrededor de 600 letras).
Creo que el punto es: en la FE 4.1 que tiene a las anotaciones de datos establecido explícitamente en algunos casos. Para mí, establecer:
ayudado. Es extraño ya que CTP5 no tuvo problemas con eso.
fuente
Me pareció útil crear un contenedor SaveChanges que haga que los EntityValidationErrors sean más legibles:
y luego cambié 'entity.SaveChanges ()' a 'SaveChanges (entidades)' en todo mi proyecto
fuente
Sé que es una vieja pregunta, pero aquí está mi respuesta:
y si usa el código primero, también puede globalizar sus mensajes de error usando múltiples archivos de recursos
Por ejemplo, tengo estos dos archivos de recursos separados, uno para error y otro para nombre de propiedad y los uso de la siguiente manera:
Como puede ver, he traducido completamente mis mensajes de error, incluidos los nombres de las propiedades, por lo que podría usarlos en el usuario más tarde, por ejemplo:
fuente