Тип данных изображения сначала в модели EF 4.1 - PullRequest
1 голос
/ 27 июня 2011

У нас есть проект, который использовал Entity Framwork 4.0. Мы рисуем модель и затем генерируем базу данных SQL Compact 3.5.

Поскольку нам требовалось большое хранилище больших двоичных объектов, мы создали столбец с типом данных Image (так как Binary ограничен 8000 байтов). Однако при обновлении до EF 4.1 наша модель была тихо преобразована в столбец Binary !

Не беспокойтесь, мы подумали, мы просто изменим это обратно. Проблема в Изображение больше не может быть выбрано! И - указание двоичного файла и установка length на большое значение, скажем, 100000, приводит к ошибке при попытке создать базу данных.

Мы обнаружили, что некоторые указатели работают с кодом вначале , начиная с Замечания к выпуску EF 4.1 , Связанное с этим сообщение в блоге команды ADO.net , Третий пост, описывающий связанную проблему и SO квест, обсуждающий связанную проблему . Тем не менее, все они говорят о проблеме с использованием подхода Code First .

Есть какие-то указания по ее решению Model First ?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 20 марта 2013

Вам нужно открыть файл модели .edmx в редакторе XML. А в разделе <edmx:StorageModels> измените Type для ваших данных Property с varbinary на image. Например:

<EntityType Name="DataSet">
 <Property Name="data" Type="image" Nullable="false" />
</EntityType>

Вам также может понадобиться вручную изменить тип столбца в файле .sdf.

Это небольшой взлом, поэтому вы должны делать это каждый раз, когда меняете модель.

0 голосов
/ 09 августа 2011

преобразуйте ваше изображение в байтовый массив и сохраните его таким образом, а затем преобразуйте в изображение, когда вы извлекаете его из базы данных, и именно так я храню большую часть данных моего типа BLOB-объектов, поскольку проблемы с первым подходом к коду, о которых вы упоминали, естьконкретная причина, по которой вы не можете использовать API сначала кода и свободное отображение с вашей базой данных

Редактировать:

Использовать varbinary (max) для типов данных размером более 8 КБ, так как изображение будет устаревшим в будущем ref в вашем файле edmx, если вы сначала используете модель, тогда вы можете установить тип данных столбца в разделе свойств, если столбец выбран в конструкторе, если вы используете сначала проект базы данных, то вы можете изменить тип данных в базе данных.затем сгенерируйте модель из базы данных

codefirst api, создайте свою базу данных, затем используйте реинжиниринг codefirst, использующий PowerTools для инфраструктуры приложений, для генерации кода и первых моделей и контекста

...