@den_labs

Сконвертировать BLOB image из bmp в jpeg в MS SQL БД

Всем привет.

Проблема в следующем, клиент (.NET, Entity framework) позволяет сохранять картинки в БД (MS SQL).
Через какое-то время БД начала пухнуть из-за bmp картинок и решили их автоматом конвертить в jpeg при сохранении, тут всё просто.
Но хорошо бы ещё конвертировать уже сохраненные картинки в БД.

Вопрос в том, как это сделать без сложных телодвижений.
Архитектура использования Entity framework позволяет писать в коде upgrade script-ы, которые запускаются при старте приложения.
Где по хорошему и надо сделать это преобразование.
Пример:
public class MyUpgradeScript: DbMigration
{
    // запускаем нужное преобразование с БД
    public void Up()
    {
    }

    public void Down()
    {
    }
}


Варианты решений:
1) Использовать стандартные средства/скрипты MS SQL, их можно просто запускать в помощью метода Sql(«select * from db»). Но таких средств я не нашёл и мне кажется их нет....
2) Запускать Power Shell из метода Up и с помощью него делать преобразования. Этот вариант кажется мне «новым велосипедом»...
3) Как-то напрямую обратиться к БД через Context или через ADO.NET и проделать нужные манипуляции.

Вот думаю в какую сторону копать.
Что можете посоветовать по данному вопросу?

Заранее спасибо.
  • Вопрос задан
  • 4290 просмотров
Решения вопроса 1
unconnected
@unconnected
Брррр… А что возвращает метод «SELECT * FROM Table»????
Просто с блобами через стримы нужно работать
msdn.microsoft.com/en-US/library/3517w44b(v=vs.80).aspx?cs-save-lang=1&cs-lang=vb
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
unconnected
@unconnected
А зачем усложнять?
Операция одноразовая. Для старых картинок.
Написать простейшую программу, которая выберет из базы всё что нужно, конвертнет и запишет обратно.
Ответ написан
Комментировать
@den_labs Автор вопроса
unconnected, усложнять не хочу, вы как раз и пишите про мой вариант 3. Только в моём варианте эта программка будет запускаться в тесте миграции. Просто опыт с EF не большой и как это сделать аккуратно ещё не знаю.
Жаль что метод Sql(«select * from db») не возвращает данные, тогда бы задача решалась просто. Вытащил инфу, с помощью .NET сконвертил и потом обновил с помощью Sql(«update »).

sebres, в 2 используются сторонние утилиты, в 3 .net-ий код. Честно говоря, ваш вариант в 1 кажется мне тоже сложным. Хотя может я не гуру SQL.
Ответ написан
Комментировать
@den_labs Автор вопроса
Ну тут ответ очевиден: сначала пытаемся делать всё наглядно и правильно, а вот если не выходит, тогда накручиваем другие решения.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы