Q: Al guardar multiples fotos, me sale el error Validation failed for one or more entities. See 'EntityValidationErrors' property for more details Tengo un problema al guardar multiples fotos, me sale el error Validation failed for one or more entities. See 'EntityValidationErrors' property for more details.
Tengo un modal donde guardo múltiples fotos:

tablas : FOTO –NOTICIA_FOTO(tabla intermedia)-NOTICIA

Cuando selecciono la imagen una por una (cuando presiono el botón examinar), las guardo, hasta ahí todo bien, pero a veces, cuando selecciono varias imágenes de una vez, y después de a una, presiono guardar me sale el siguiente error:
Validation failed for one or more entities. See 'EntityValidationErrors' property for more details.

Le  muestro todo el codigo:
<HttpPost>
Function GuardarNoticia(notic As NOTICIA) As ActionResult
    Using db As New BD_LOSCOPIHUESEntities1
        Dim fecha_actual As String = Date.Now
        Dim foto_binaria As Byte() = Nothing
        Dim titulo As String = notic.TituloNoticia 
        Dim descripcion As String = notic.DescripcionNoticia 
        Dim retorno As Integer = 1
        Dim noticia As New NOTICIA
        noticia.TituloNoticia = titulo
        noticia.DescripcionNoticia = descripcion
        noticia.FechaPublicacionNoticia = fecha_actual
        noticia.Rut = "11.111.111"
        Try
            Dim directorio_noticia As String = "/Archivos/Noticias/Fotos/" & Date.Now.ToString("dd-MM-yyyy") & "/" & titulo & "/"
            Dim directorio_noticia_portada As String = "/Archivos/Noticias/Fotos/" & Date.Now.ToString("dd-MM-yyyy") & "/" & titulo & "/Portada/"

            Dim existeDirectorioNoticia As Boolean
            existeDirectorioNoticia = System.IO.Directory.Exists(directorio_noticia)

            Dim existeDirectorioNoticiaPortada As Boolean
            existeDirectorioNoticiaPortada = System.IO.Directory.Exists(directorio_noticia_portada)

            If existeDirectorioNoticia = False Then
                Directory.CreateDirectory(Server.MapPath("/" & directorio_noticia))
            End If
            If existeDirectorioNoticiaPortada = False Then
                Directory.CreateDirectory(Server.MapPath("/" & directorio_noticia_portada))
            End If

            For i As Integer = 0 To Request.Files.Count - 1
                Dim file = Request.Files(i)

                If (file.ContentLength > 0) Then

                    Dim fileName = Path.GetFileName(file.FileName)
                    Dim formato = System.IO.Path.GetExtension(file.FileName)
                    Using reader = New System.IO.BinaryReader(file.InputStream)
                        foto_binaria = reader.ReadBytes(file.ContentLength)
                        noticia.FOTO.Add(New FOTO() With {.FechaFoto = Date.Now, _
                                                          .FormatoFoto = formato, _
                                                          .Foto = foto_binaria, _
                                                          .NombreFoto = fileName, _
                                                          .RutaFoto = "../.." & directorio_noticia & fileName})
                        If i = 0 Then
                            noticia.FotoPortadaNoticia = foto_binaria
                            noticia.NombreFotoPortadaNoticia = fileName
                            noticia.FormatoFotoPortadaNoticia = formato
                            noticia.RutaFotoPortadaNoticia = "../.." & directorio_noticia_portada & fileName
                            Dim path__portada = Path.Combine(Server.MapPath("~" & directorio_noticia_portada), fileName)
                            file.SaveAs(path__portada)
                        End If
                        Dim path__1 = Path.Combine(Server.MapPath("~" & directorio_noticia), fileName)
                        file.SaveAs(path__1)
                    End Using

                End If
            Next


            db.NOTICIA.Add(noticia)
            db.SaveChanges()

            Return Json(retorno)
        Catch ex As Exception
            retorno = 2
            Return Json(ex.Message)
        End Try


    End Using
End Function

Yo pensaba que no venían las fotos adjuntadas, pero si vienen, me es difícil encontrar específicamente la causa de mi error. Si alguien sabe, se lo agradecería mucho

A: Deberias definir un try..catch que controle la DbEntityValidationException entonces podras recuperar los mensajes del  EntityValidationErrors y conocer cual es el problema real.
Hay varias formas de lograrlo:


*

*Usando un foreach en las listas EntityValidationErrors y ValidationErrors, uniendo el mensaje de la validacion de EF en un string
Validation failed for one or more entities. See 'EntityValidationErrors' property for more details
VB.NET Validation failed for one or more entities

*Usando linq (creo que esta es la mas simple)
Easy way to improve DbEntityValidationException of Entity Framework
El objetivo es poder tener la descripcion de los mensajes de errores en als validaciones para conocer el problema y resolverlo.

A: Excelente Leandro. Pude capturar el error definiendo el try..cach que controle Entity.Validation.DbEntityValidationException:
try
...
Catch ex As Entity.Validation.DbEntityValidationException
            Dim errorMessages =    ex.EntityValidationErrors.SelectMany(Function(x) x.ValidationErrors).Select(Function(x) x.ErrorMessage)
            Dim fullErrorMessage = String.Join("; ", errorMessages)
            Dim exceptionMessage = String.Concat(ex.Message, " La validacion del error es: ", fullErrorMessage)
            Throw New Entity.Validation.DbEntityValidationException(exceptionMessage, ex.EntityValidationErrors)                
        End Try

En mi caso, la causa del error, era por que el tamaño del campo de una tabla era muy poco y guardaba nombres de mayor tamaño.
