Локальная БД генерирует усечение байтового массива до длины 8000 исключений - PullRequest
8 голосов
/ 08 декабря 2011

Я пытаюсь сделать снимок из элемента управления Map в виде WritableBitmap, преобразовать его в байтовый массив и сохранить в локальной БД.Он работает нормально (я могу преобразовать байтовый массив обратно в изображение), пока я не отправлю изменения в БД.В этот момент он генерирует исключение «Усечение байтового массива до длины 8000».Я не нашел никакой документации об ограничении байтового массива.Кто-нибудь знает, как увеличить лимит на 8000?Мой байтовый массив является членом моей модели:

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

1 Ответ

11 голосов
/ 08 декабря 2011

Если вы посмотрите на документы SQL Compact , вы увидите, что двоичное или varbinary поле может иметь длину не более 8000 байт, поэтому это говорит о том, что столбец byte[] отображается в varbinary. Чтобы заставить его хранить данные большего размера, вам нужно заставить движок использовать тип поля image. Это может быть так же просто, как обновить атрибут Column следующим образом (не проверено):

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