Тип столбца моей базы данных: varbinary (max), (sql server 2008).
Классы Linq to Sql (vs 2010, fx4) сгенерировали для меня этот код:
[global::System.Data.Linq.Mapping.ColumnAttribute
(Storage="_Raw", DbType="VarBinary(MAX)", UpdateCheck=UpdateCheck.Never)]
public System.Data.Linq.Binary Raw
{
get
{
return this._Raw;
}
...
Я хочу вставить файл растрового изображения размером 1,5 Мбайт следующим образом:
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();
Закомментированные строки - это то, что я хочу, чтобы был код, но они вызывают исключение при вызове SubmitChanges.Линии внизу работают нормально.Но если я увеличу размер буфера до 4001, я получу то же исключение.Мне нужно, чтобы длина fs.Length была больше, чем 1 500 000.
Сообщение об исключении: «Строка или двоичные данные будут обрезаны».Кто-нибудь может объяснить эту ошибку и показать мне, как заставить ее работать?