зависит от размеров изображения
Если они большие (больше чем мегабайт или около того), и у вас их много или их неограниченное количество - тогда может быть лучше сохранить их в файловой системе и просто сохранить местоположение в базе данных. ,
Плюсы:
- Лучшие характеристики роста БД
- Проще делать инкрементные резервные копии
- Проще иметь многоуровневое хранилище (быстрое дорогое хранилище для часто используемых изображений, медленное хранилище для не так часто используемых)
- Возможно иметь произвольный доступ к части файла (не нужно читать всю вещь)
Минусы:
- Трудно сделать транзакции
- Отдельное место, которым нужно управлять
- Отдельные элементы управления доступом, которыми нужно управлять
- капли легче программировать
Если изображения находятся в диапазоне нескольких k, а у вас их ограниченное количество, просто используйте MemoryStream (сохраните в нем как для любого потока) и перенесите байты в поле большого двоичного объекта.
SQL Server предоставляет вам лучшее из обоих миров с типом поля файловой системы (экстернализует большой двоичный объект в файл, но в остальном обрабатывается так же, как большой двоичный объект)
Также приятно хранить дополнительную информацию об изображении в других полях, чтобы вам не приходилось читать блоб изображения, чтобы что-то с ним делать. Например:
- Размер
- Тип
- Если многостраничный (например, TIFF), количество страниц
Я написал о некоторых соображениях, касающихся изображений в БД, в моем блоге:
http://www.atalasoft.com/cs/blogs/loufranco/archive/2007/12/03/images-in-databases-part-i-what-to-store.aspx
http://www.atalasoft.com/cs/blogs/loufranco/archive/2007/12/04/images-in-databases-part-ii-web-images-are-random-access.aspx
http://www.atalasoft.com/cs/blogs/loufranco/archive/2009/04/28/document-storage-database-blobs-or-the-filesystem.aspx