2012-01-06 2 views
11

У меня есть класс POCO с именем Attachment, который сопоставляется с таблицей в SqlServer с полем VarBinary (max). Поле содержит файлы.EF4 Сопоставление varbinary (max) с двоичным кодом - первая ошибка кода

Класс ПОКО выглядит следующим образом

public class Attachment 
{ 
    public string AttachmentId { get; set; } 
    public string AttachmentTypeId { get; set; } 
    public string Title { get; set; } 
    public string Text { get; set; } 
    public Binary Data { get; set; } 
} 

по картированию выглядит как этот

modelBuilder.Entity<Attachment>().Property(a => a.Data).HasColumnName("col_data"); 

Однако отображение бросает ошибку

The type 'System.Date.Linq.Binary' must be a non-nullable value type in order to use it as a parameter 'T' 

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

файл в базе данных имеет начальную двоичную строку, как: -

0x504B0304140008000800027923400000000000000000000000001F000000 

Я думаю, что это JPG файл. Любая помощь в получении файла из базы данных в одной части будет оценена по достоинству.

+1

Google предполагает, что '0x504B0304' является индикатором zipfile: http://www.google.co.uk/search?q=0x504B0304, если это помогает? (Я бы подумал, что 'byte []' array - это правильный способ продолжения, кстати.) –

+0

Что заставляет вас думать, что он поврежден? – ken2k

+0

Спасибо Оуэн, Это точно, что это было. Теперь я понимаю, что это такое. Теперь я могу распаковать файл и передать содержимое в браузер или файловую систему. –

ответ

21

Binary Тип данных предназначен только для Linq-to-Sql. EF не может работать с ним. Правильным типом данных для EF является массив байтов (byte[]).

Смежные вопросы