C#: Сохранение изображения в DB
-
24-10-2019 - |
Вопрос
Может ли кто -нибудь дать мне несколько советов о том, как сохранить файл изображения в DB в C#? Я буду сохранять много изображений, так что лучше всего лишь сократить пространство, в котором он потребуется? В настоящее время я использую поле Varbinary (MAX) в дБ.
Спасибо!
Решение
Если вы должны сохранить фактический файл в SQL, убедитесь, что вы нанесли некоторые ограничения вокруг размера изображения и убедитесь, что вы правильно спланируете размеры базы данных - сколько изображений и какого размера вы ожидаете?
Если вы должны сохранить его в SQL, мои предпочтения состоит в том, чтобы автоматически сидеть в своей собственной базе данных SQL. Таким образом, любые проблемы с производительностью, с которыми я сталкиваюсь с этими изображениями, не влияет на остальную часть моей базы данных.
Теперь, если вам не нужно хранить изображения в базе данных SQL, то я думаю, что это просто вызывает, чтобы это было сделано с помощью хранилища Blob -Blob. Посмотрите на это - это даст вам то, что вы хотите в очень эффективной системе.
Если вы не можете использовать Azure, вам следует собрать класс, который будет обрабатывать чтение/написание/поиск изображений в файловую систему. Сохранение в файловой системе (выполнено правильно) будет работать намного лучше, чем сохранение в SQL.
Другие советы
Это было бы хорошо. Однако, если эти изображения настолько большие, а ваш DBA может больше не любить OYU за то, что он поместил их туда, вы можете поместить их куда -нибудь и хранить место в DB.
Я думаю, есть много способов, которыми вы могли бы справиться с этим. Просто взвесить свои плюсы и минусы.
Я только что дал вам одну альтернативу.
Не очень хорошая идея для хранения изображений в базе данных. Вы можете хранить URL -адреса для изображений.
Какой формат является изображением и какую технологию базы данных вы используете?
Одним из вариантов является преобразование изображений в двоичный массив и подтолкнуть их в свою базу данных. Я нашел хороший код о том, как это сделать в CodeProject:
Как сказал Магнус, FileStreams не хранятся на страницах БД, поэтому это не влияет на производительность.
Хотя хранение файлов в БД означает, что ваши резервные копии БД станут намного больше.
Кто -то еще упомянул, что хранит только URL -адреса. Это также отличная идея, и, вероятно, самая наибольшая для каждого форманта для простой настройки.