Мне нужно сохранить изображение jpg в базе данных в базе данных типа этого свойства nvarchar (max) , поэтому мне нужно сериализовать и десериализовать это свойство как это:Изображение повреждено или усечено в NHibernate при использовании байта [] и varbinary (max)
private byte[] HexStringToObject(string value)
{
SoapHexBinary shb = SoapHexBinary.Parse(value);
return shb.Value;
}
private string ObjectToHexString(object value)
{
if (value == null)
return "";
SoapHexBinary shb = new SoapHexBinary((byte[])value);
return shb.ToString();
}
но есть проблема ,, Я не знаю, что проблема связана с сериализации или десериализации метод только тогда, когда я хочу видеть это изображение с помощью:
public FileResult Initialpicture(int? propertyId)
{
if (propertyId == null)
return null;
IProperty image = Repository<IProperty>.Get(propertyId);
if (image.Value == null)
return null;
return File((byte[])image.Value, "image/jpg");//Get of Value use deserialize method to get byte[]
и в браузер я просто вижу небольшую часть изображения, а ошибка «Изображение повреждено или усечено»: }
В чем проблема?
nvarchar (max) ?? Вы имели в виду varbinary (max)? –
Вы можете использовать FILESTREAM, если используете Sql Server 2008 или выше. –
+1 комментарий Митта Пшеница: не храните двоичные данные в столбце текста (varchar). Пожалуйста, изучите различия между текстовыми данными и необработанными двоичными строками - недостаточно людей их понимают. – Thanatos