データベースの種類はvarbinary(max)、(sql server 2008)です。私はそうのような1.5 Mbのビットマップファイルを挿入したいlinq-to-sqlクラスを使用して> 4000バイトをvarbinary(max)に書き込む
[global::System.Data.Linq.Mapping.ColumnAttribute
(Storage="_Raw", DbType="VarBinary(MAX)", UpdateCheck=UpdateCheck.Never)]
public System.Data.Linq.Binary Raw
{
get
{
return this._Raw;
}
...
:SQLのクラス(2010対、FX4)へ
LINQのは、私のためにこのコードを生成した
var fi = new FileInfo(@"c:\whatever.bmp");
var fs = fi.OpenRead();
var newImage = new Image();
//var buffer = new byte[fs.Length];
//fs.Read(buffer, 0, (int)fs.Length);
//newImage.Raw = buffer;
var buffer = new byte[4000];
fs.Read(buffer, 0, 4000);
newImage.Raw = buffer;
using (var dc = new MyDataContext())
{
dc.Images.InsertOnSubmit(newImage);
dc.SubmitChanges();
}
fs.Dispose();
ラインをI私がコードを欲しいものにコメントしましたが、SubmitChangesコールで例外がスローされます。下の行は正常に動作します。しかし、バッファサイズを4001に増やしても、同じ例外が発生します。私は150万人ほどの長さを持つ必要があります。
例外メッセージは「文字列またはバイナリデータが切り捨てられます。」です。誰もがこのエラーを説明し、それを動作させる方法を教えてもらえますか?
あなたが言及した例外は、あなたが取得しているSQLエラーか何か他のものですか? – leppie
SubmitChangesの呼び出しでスローされた例外からのメッセージです。私はそれがSQL Serverからのメッセージであり、ちょうど.net例外に包まれていると思われる。私はそれをより良く説明するために編集しました。 – wozza
私はSQLに問題があると思われます。 Linq2SQLを使わずにデータを挿入して確認してください。 – leppie