2011-12-08 14 views
8

Tôi đang cố chụp ảnh từ điều khiển Bản đồ dưới dạng WritableBitmap, chuyển đổi nó thành mảng byte và lưu nó vào DB cục bộ. Nó hoạt động tốt (tôi có thể chuyển đổi mảng byte trở lại hình ảnh) cho đến khi tôi gửi các thay đổi cho DB. Tại thời điểm này nó ném một ngoại lệ "cắt ngắn mảng Byte đến độ dài 8000". Tôi không tìm thấy bất kỳ tài liệu nào về giới hạn mảng byte. Có ai biết cách tăng giới hạn 8000? mảng byte của tôi là một thành viên của mô hình của tôi:Local DB ném cắt mảng Byte đến độ dài 8000 ngoại lệ

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

Bạn đang sử dụng cơ sở dữ liệu nào? –

+0

Trường có được định nghĩa là một biến thể (8000) ở phía DB không? – UnhandledExcepSean

Trả lời

11

Nếu bạn nhìn vào the SQL Compact docs, bạn sẽ thấy rằng một trường nhị phân hoặc varbinary thể có nhiều nhất 8000 byte, do đó nói với tôi rằng một cột byte[] được ánh xạ đến varbinary. Để làm cho nó lưu trữ dữ liệu lớn hơn, bạn cần phải có động cơ để sử dụng loại trường image. Điều này có thể đơn giản như việc cập nhật thuộc tính Column như thế này (chưa được kiểm tra):

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

VARBINARY (MAX) không có sẵn trong SQL Compact? – UnhandledExcepSean

+1

Không, varbinary (max) thì không. – ctacke

+0

Xin lỗi vì câu trả lời muộn. Đó chính xác là những gì tôi đang tìm kiếm. Tôi không nghĩ xem các tài liệu SQL CE. Cảm ơn. –