Ошибка при попытке сохранить изображение в виде байтового массива с помощью SubSonic - PullRequest
0 голосов
/ 30 марта 2011

Предоставляет ли SubSonic какой-либо механизм для хранения изображения (преобразованный в формат byte [])?
Может ли кто-нибудь помочь избавиться от этой ошибки?

База данных: SQL-сервер 2005
Разработка среды: ASP.NET (c #)
Дозвуковая версия: 2.2.1.0

Тип данных в БД: image
Тип данных в Subsonic генерируется DAL: DbType.Binary
Тип данных в коде: byte [] image

Ошибка в операторе:

DB.Insert().Into(DamageItems.Schema, "ImageID", "Cost","Image").Values(imageID, cost,image).Execute();

Выражение запроса в окне наблюдения:

{INSERT INTO [dbo].[ImageItems](ImageID,Cost,Image)
 VALUES (@ins_ImageID,@ins_Cost,@ins_Image)
}

Ошибка:

Не удалось преобразовать значение параметра из байта [] в строку.

1 Ответ

0 голосов
/ 30 марта 2011

Вы можете попробовать следующий подход:

DB.Insert().Into<DamageItems>()
    .Value(DamageItems.ImageIDColumn, imageID)
    .Value(DamageItems.CostColumn, cost)
    .Value(DamageItems.ImageColumn, image)
    .Execute();

Возможно, тип будет правильно распознан при указании TableColumn объектов (не могу проверить прямо сейчас при написании этого).

Если это не сработает, я бы также проверил, вызывает ли проблема именование столбца с именем типа данных (image).

Кстати, начиная с SQL 2005, image устарел, вместо него рекомендуется использовать varbinary(max).

...