Linq to Sql Update Bunary field

Алексей Ку.
Дата: 29.04.2014 15:49:45
Добрый день!

У меня есть DataContext. Создаю экземпляр одной из сущностей и делаю Submit. Одно из полей типа Binary. Далее я хочу к нему добавить некоторый массив байтов.
Делаю вот так:

ver.Binary = ver.Binary + partBytes;
db.SubmitChanges();

Где ver - экземпляр сущности (объект класса из DataContext.

Получаю ошибку:
Operator '+' cannot be applied to operands of type 'System.Data.Linq.Binary' and 'byte[]'

Как быть?
Алексей Ку.
Дата: 29.04.2014 15:58:02
Алексей Ку.,

Прошу прощения. В БД тип поля image.
buser
Дата: 29.04.2014 16:06:51
http://stackoverflow.com/questions/415291/best-way-to-combine-two-or-more-byte-arrays-in-c-sharp
Не до конца понятна изначальная задача...
Алексей Ку.
Дата: 29.04.2014 16:15:53
buser,

Приведу в качестве примера код TSQL:

Есть таблица с полем varbinary(max) (если поле типа image, то будет ошибка).
Выполную следующий код
update t_AUVersions
set Binary = 0x636F6F6C
where id = 7

select binary
from t_AUVersions
where id = 7

update t_AUVersions
set Binary = Binary + 0x888
where id = 7

select binary
from t_AUVersions
where id = 7


в качестве ответа получаю:
0x636F6F6C
----
0x636F6F6C0888

Вот суть задачи. Порционное добавление двоичных данных к определённой записи при помощи Linq.
Я создал DataContext. Создал экземпляр t_AUVersion и записал его в базу сделав Submit()
t_AUVersion ver = new t_AUVersion()
            {
                Id_file = db.t_AUFiles.Where(f => f.Key == _key).Select(f => f.Id).FirstOrDefault(),
                UploadDate = DateTime.Now,
                FileLastWriteTIme = file.LastWriteTime,
                Version = FileVersionInfo.GetVersionInfo(file.FullName).FileVersion ?? DBNull.Value.ToString(),
                Size = Convert.ToInt32(file.Length),
                IsActive = active,
                IsDel = false
            };

            db.t_AUVersions.InsertOnSubmit(ver);
            db.SubmitChanges();


Теперь мне к \той записи надо прибавлять поступающие двоичные данные. /то я пытаюсь сделать так
ver.Binary = ver.Binary + partBytes; 
db.SubmitChanges();


Получаю ошибку:
Operator '+' cannot be applied to operands of type 'System.Data.Linq.Binary' and 'byte[]'
Konst_One
Дата: 29.04.2014 16:19:06
потому что надо массив байт туда пихать уже подготовленный, т.е. вы должны сливать 2 массива в один
Алексей Ку.
Дата: 29.04.2014 16:33:09
Konst_One,

А как подготовить тогда тот кусочек, который я собираюсь добавлять?
Алексей Ку.
Дата: 29.04.2014 16:36:49
Можно конечно сделать при помощи хранимой процедуры. Но хотелось бы обойтись чисто Linq.
buser
Дата: 29.04.2014 16:58:26
Алексей Ку.
Можно конечно сделать при помощи хранимой процедуры. Но хотелось бы обойтись чисто Linq.

Не выйдет... Процедуру придется таки добавить в мудель...
buser
Дата: 29.04.2014 17:06:14
Алексей Ку.
Дата: 29.04.2014 17:26:23
buser,

Ну тот же смысл. Через хранимую процедуру. Я так пока и делаю. А мне вот очень хотелось обойтись только Linq.