【问题标题】:Local DB throws Byte array truncation to a length of 8000 exception本地 DB 抛出字节数组截断长度为 8000 的异常
【发布时间】:2011-12-08 13:13:28
【问题描述】:

我正在尝试从 Map 控件获取快照作为 WritableBitmap,将其转换为字节数组并将其保存在本地数据库中。它工作正常(我可以将字节数组转换回图像),直到我将更改提交到数据库。此时它会抛出异常“字节数组截断到长度为 8000”。我没有找到任何关于字节数组限制的文档。有谁知道如何增加8000的限制?我的字节数组是我的模型的成员:

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

【问题讨论】:

  • 你用的是什么“数据库”?
  • 该字段是否曾在数据库端定义为 varbinary(8000)?

标签: database windows-phone-7 linq-to-sql sql-server-ce


【解决方案1】:

如果您查看the SQL Compact docs,您会看到二进制或varbinary 字段最多可以有8000 个字节,这告诉我byte[] 列被映射到varbinary。要让它存储比这更大的数据,您需要让引擎使用image 字段类型。这可能就像像这样更新Column 属性一样简单(未经测试):

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

【讨论】:

  • VARBINARY(MAX) 在 SQL Compact 中不可用?
  • 很抱歉回答迟了。这正是我想要的。我没想到要查看 SQL CE 文档。谢谢。
猜你喜欢
  • 2012-07-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多