Сохранение ссылки на тип блоба - PullRequest
0 голосов
/ 29 апреля 2018

Я хочу сохранить ссылку на изображение, которое будет храниться в базе данных. Но я не уверен, как подойти к этому в C # (Entityframework).

Использование первого подхода к коду EF. В классе Model я должен сделать String imageReference, og я должен использовать byte? Или есть другое и лучшее решение для этого? Что я хочу после создания базы данных, для этого столбца должно быть написано «Blob» или то, что когда-либо использовалось для хранения больших объектов, таких как изображения.

Я также думаю, что решением может быть только сохранение ссылки в базе данных, а не само изображение. Но я не знаю, что лучше?

1 Ответ

0 голосов
/ 29 апреля 2018

Вам нужно создать его как байт, и ваша БД должна быть blob

var image = new ImageEntity(){
   imageReference= convertImageToByteArray(image)
}
_Context.Images.Add(image);
_Context.SaveChanges();

Преобразование вашего изображения в байтовый массив:

public byte[] convertImageToByteArray(Image imageIn)
{
    MemoryStream memStream = new MemoryStream();
    imageIn.Save(memStream , ImageFormat.Gif); //u may choose other formats
    return memStream .ToArray();
}

Я бы порекомендовал сохранить путь к файлу в качестве ссылки, а не сохранять его в виде большого двоичного объекта, если у вас нет выбора. Это связано с тем, что большая БД снижает производительность, а жесткий диск лучше справляется с обработкой файлов. Если размер ваших файлов изображений превышает 1 МБ, файловая система имеет преимущество перед SQL Server. Кроме того, хранение его в файловой системе обеспечивает большую гибкость (т. Е. Вы можете перенести файлы в другое место в следующий раз и изменить ссылку в БД во время миграции, вы не можете сделать это в БД)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...