Tengo una clase POCO llamada Attachment
que se asigna a una tabla en SqlServer con un campo VarBinary (max) en ella. El campo contiene archivos.EF4 Asignación varbinary (max) a Binary - Código Primer error
La clase POCO ve así
public class Attachment
{
public string AttachmentId { get; set; }
public string AttachmentTypeId { get; set; }
public string Title { get; set; }
public string Text { get; set; }
public Binary Data { get; set; }
}
El mapeo se parece a esto
modelBuilder.Entity<Attachment>().Property(a => a.Data).HasColumnName("col_data");
Sin embargo, el mapeo está lanzando un error
The type 'System.Date.Linq.Binary' must be a non-nullable value type in order to use it as a parameter 'T'
El mapeo funciona bien si uso una matriz de bytes pero esto parece estar corrompiendo los datos en el camino.
El archivo de la base de datos tiene una cadena binaria inicial como: -
0x504B0304140008000800027923400000000000000000000000001F000000
Creo que este es un archivo JPG. Cualquier ayuda para obtener el archivo de la base de datos en una sola pieza sería apreciado.
Google sugiere que '0x504B0304' es un indicador de archivo comprimido: http://www.google.co.uk/search?q=0x504B0304, si eso sirve de algo? (Por cierto, hubiera pensado que una matriz 'byte []' es la forma correcta de proceder). –
¿Qué te hace pensar que está dañado? – ken2k
Gracias Owen, eso es exactamente lo que era. Tiene sentido ahora que sé lo que es. Ahora puedo descomprimir el archivo y transmitir los contenidos al navegador o al sistema de archivos. –