2012-01-06 156 views
11

我有一個名爲Attachment的POCO類,它映射到SqlServer中的一個表,其中包含一個VarBinary(max)字段。該字段包含文件。EF4將varbinary(max)映射到二進制 - 代碼優先錯誤

的POCO類看起來像這樣

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

谷歌建議'0x504B0304'是一個zipfile的指標:http://www.google.co.uk/search?q=0x504B0304,如果有幫助的話? (順便說一下,我認爲'byte []'數組是正確的方式。) – 2012-01-06 12:41:56

+0

是什麼讓你認爲它已損壞? – ken2k 2012-01-06 12:51:23

+0

謝謝歐文,這正是它的原因。現在有道理我知道它是什麼。我現在可以解壓縮文件並將內容傳輸到瀏覽器或文件系統。 – 2012-01-09 13:23:41

回答

21

Binary數據類型僅適用於Linq-to-Sql。 EF無法使用它。 EF的正確數據類型是字節數組(byte[])。