2012-01-06 9 views
11

私は、VarBinary(max)フィールドを持つSqlServerのテーブルにマップするAttachmentというPOCOクラスを持っています。このフィールドにはファイルが含まれています。EF4バイナリへのvarbinary(max)のマッピング - コードの最初のエラー

POCOクラスは、マッピングは、この

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' 

エラーを投げているしかし、私が使用している場合、マッピングが正常に動作ように見えるこの

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; } 
} 

のように見えますバイト配列ですが、これは途中でデータを破損しているようです。私は、これはJPGファイルだと思う

0x504B0304140008000800027923400000000000000000000000001F000000 

- :

データベース内のファイルは以下のように初期のバイナリ文字列を持っています。 DBからファイルを1つにまとめる手助けがあれば幸いです。

+1

Googleでは、「0x504B0304」はzipファイルの指標であることを示唆しています。http://www.google.co.uk/search?q=0x504B0304 (私は 'byte []'配列が正しい方法だと思っていたでしょう) –

+0

あなたはそれが壊れていると思いますか? – ken2k

+0

ありがとうオーウェン、それはまさにそれだった。私はそれが何であるか知っています。私は今、ファイルを解凍し、内容をブラウザまたはファイルシステムにストリーミングできるようになりました。 –

答えて

21

Binaryデータ型はLinq-to-SQLのみです。 EFはそれを扱うことができません。 EFの正しいデータ型は、バイト配列(byte[])です。

関連する問題