2011-12-08 6 views
8

私は、マップ可能なコントロールとしてWritableBitmapとしてスナップショットを取得し、それをバイト配列に変換してローカルDBに保存しようとしています。私はDBに変更を提出するまで、うまく動作します(バイト配列をイメージに変換することができます)。この時点で、「8000の長さのバイト配列の切り捨て」という例外がスローされます。私は、バイト配列の制限に関するドキュメントを見つけられませんでした。誰も8000の限界を増やす方法を知っていますか?私のバイト配列には、私のモデルのメンバーである:ローカルDBは、8000の長さの例外のバイト配列の切り捨てをスローする

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

どのような "データベース"を使用していますか?これは、次のようなColumn属性を更新するのと同じくらい簡単です。 –

+0

フィールドはDB側でvarbinary(8000)として定義されていますか? – UnhandledExcepSean

答えて

11

あなたはthe SQL Compact docsを見ればそれはbyte[]列がマッピングされることを私に伝えますので、あなたは、バイナリまたはvarbinary型のフィールドは、ほとんどの8000バイトにすることができていることがわかりますvarbinaryに変換します。それ以上のデータを格納するには、imageフィールドタイプを使用するようエンジンを取得する必要があります。

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

SQLコンパクトではVARBINARY(MAX)を使用できません。 – UnhandledExcepSean

+1

いいえ、varbinary(max)はそうではありません。 – ctacke

+0

遅れて申し訳ありません。それはまさに私が探していたものです。私はSQL CEのドキュメントを見ないと思った。ありがとう。 –

関連する問題