Как сохранить изображение в БД с использованием EF 4.0 с подходом Model first.MVC2 - PullRequest
2 голосов
/ 31 декабря 2010

Я пробую EF 4.0 и использую модель первым подходом. Я хотел бы сохранить изображения в базе данных, и я не уверен в том, что скаляр лучше всего подходит для сущности.
У меня в настоящее время есть его (тип скалярного изображения), настроенный как двоичный файл. Из того, что я читал, лучший способ сохранить изображение в БД - это байт []. Итак, я предполагаю, что двоичный файл - это путь. Если есть лучший способ, я бы переключился.

alt text

В моем контроллере у меня есть:

 //file from client to store in the db
 HttpPostedFileBase file = Request.Files[inputTagName];
 if (file.ContentLength > 0)
 {
   keyToAdd.Image = new byte[file.ContentLength];
   file.InputStream.Write(keyToAdd.Image, 0, file.ContentLength);
 }

Это прекрасно работает, но когда я запускаю его, я получаю исключение, записывающее поток в keyToAdd.Image. Исключением является что-то вроде: Метод не существует.

Есть идеи? Обратите внимание, что при использовании первого подхода к модели EF 4.0 в качестве доступных типов у меня есть только int16, int32, double, string, decimal, binary, byte, DateTime, Double, Single и SByte. Спасибо

1 Ответ

1 голос
/ 31 декабря 2010

Вместо использования Write я должен был использовать Read. Мне все еще интересно, есть ли лучший способ сохранить поток изображений.

Это был файл.InputStream. Запись (tmpBytes, 0, file.ContentLength);

 byte[] tmpBytes = new byte[file.ContentLength];
 file.InputStream.Read(tmpBytes, 0, file.ContentLength);
 keyToAdd.Image = tmpBytes;
...