Как сохранить картинку в базе данных? - PullRequest
3 голосов
/ 26 мая 2009

Я работаю над Linq To Sql, WPF, и у меня есть база данных, теперь мне нужно сохранить изображение в базе данных, но я не знаю, какой тип данных является правильным для сохранения базы данных изображений (эта база данных будет подключена от 10 пользователей одновременно). Можете ли вы указать мне правильный путь для преодоления этого шага? Если я не ошибаюсь, это не хорошая идея, чтобы сохранить изображения в базе данных, но если вы можете посоветовать мне лучший метод, я буду применять его. Большое спасибо за ваше время.

С наилучшими пожеланиями

Ответы [ 5 ]

5 голосов
/ 26 мая 2009

Вы можете использовать тип столбца «varbinary (MAX)» или «image». Linq2Sql автоматически сгенерирует класс, который использует двоичный объект для переноса изображения. Двоичный объект - это просто обертка вокруг байта [].

myObject.Image = new Binary(imageByteArray);
3 голосов
/ 26 мая 2009

Храните изображение в виде большого двоичного объекта, переменная, определенная в вашем классе, содержащая изображение, может быть потоком байтов []. В качестве альтернативы вы просто сохраняете ссылку на изображение в базе данных и сохраняете изображение на файловом сервере.

1 голос
/ 27 мая 2009

Есть много горячих споров, когда люди говорят об этом, я хотел бы отметить, что вы можете рассмотреть возможность сохранения этого пути к сетевой папке в базе данных.

Недостаток хранения действительного изображения в базе данных состоит в том, что все эти байты должны отправляться взад и вперед через SQL-запрос, и если эти изображения будут большими, вы существенно увеличите размер вашей БД. наряду со странными вещами, которые были упомянуты выше.

В любом случае, я не хочу открывать банку с червями, просто хотел показать альтернативу.

ОБНОВЛЕНИЕ:

Примерно так:

public partial class LinqClass
{
    public string ImagePath { get; set; }

    public System.Drawing.Image Picture
    {
        get
        {
            return System.Drawing.Image.FromFile(ImagePath);
        }
    }
}

где ImagePath - фактический столбец в БД, в который вы сохраняете путь к файлу. В нем нет кода для сохранения файла (что-то вроде File.Save (ImagePath) и т. Д., Но это только начало.

1 голос
/ 26 мая 2009

Обычно вы будете использовать varbinary (max) - или меньше чем max - на стороне базы данных, и вы будете использовать тип byte [] в вашем классе.

0 голосов
/ 26 мая 2009

Я никогда не делал этого с Linq, но мы использовали преобразование b64 для изображения, а затем тип данных clob. Затем переверните b64, если хотите просмотреть изображение.

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