2011-12-08 7 views
8

Estoy tratando de tomar una instantánea de un control de mapa como un bitmap, convertirlo a una matriz de bytes y guardarlo en la base de datos local. Funciona bien (puedo convertir la matriz de bytes a la imagen) hasta que envíe los cambios a la base de datos. En este punto arroja una excepción "Truncamiento de matriz de bytes a una longitud de 8000". No encontré ninguna documentación sobre la limitación de la matriz de bytes. ¿Alguien sabe cómo aumentar el límite de 8000? Mi matriz de bytes es un miembro de mi modelo:DB local arroja truncamiento de matriz de bytes a una longitud de 8000 excepción

private byte[] _locationImage; 
[Column] 
public byte[] LocationImage 
{ 
    get { return _locationImage; } 
    set 
    { 
     if (_locationImage != value) 
     { 
     NotifyPropertyChanging("LocationImage"); 
     _locationImage = value; 
     NotifyPropertyChanged("LocationImage"); 
     } 
    } 
} 
+0

¿Qué "base de datos" está utilizando? –

+0

¿Se ha definido alguna vez el campo como varbinary (8000) en el lado DB? – UnhandledExcepSean

Respuesta

11

Si nos fijamos en the SQL Compact docs, verá que un campo binary o varbinary puede estar en la mayoría de los 8000 bytes, por lo que me dice que una columna se asigna byte[] a varbinary. Para que almacene datos más grandes que eso, necesitaría obtener el motor para usar un tipo de campo image. Esto podría ser tan simple como actualizar el atributo Column como este (no probado):

[Column(DbType="image")] 
public byte[] LocationImage { ... } 
+0

VARBINARY (MAX) no está disponible en SQL Compact? – UnhandledExcepSean

+1

No, varbinary (max) no lo es. – ctacke

+0

Perdón por la respuesta tardía. Es exactamente lo que estaba buscando. No pensé en mirar los documentos SQL CE. Gracias. –

Cuestiones relacionadas