Estaba teniendo el mismo problema, es decir, la primera vez que la imagen se guardó correctamente en el lado de la base de datos, pero si la validación fallaba posteriormente y luego intentaba guardar la imagen nuevamente después de ingresar datos válidos, obtenía 0x
en la columna de la imagen. Para resolver eso, hice lo que @Ann L.
dijo:
byte[] photo = null;
if(model.Photo != null)
{
var stream = model.Photo.InputStream;
stream.Position = 0;
using(BinaryReader br = new BinaryReader(model.Photo.InputStream))
{
photo = br.ReadBytes(model.Photo.ContentLength);
}
}