我試圖在SQL精簡版(CE)數據庫中存儲/保存圖像。使用ASP.NET MVC 3和Entity Framework 4.1在SQL CE 4.0中存儲圖像時出錯代碼優先
我宣佈領域在我的學生模型爲:
[Column(TypeName = "image")]
public byte[] Photo { get; set; }
該數據庫與Photo列的圖像數據類型創建爲可以在這裏看到:
的問題是:
當我運行該應用程序並嘗試使用3 MB照片保存學生時(例如),我收到一個異常:
validationError.ErrorMessage = "The field Photo must be a string or array type
with a maximum length of '4000'."
SQL Server CE支持這些Data Types。在SQL Express和SQL Compact Edition(CE)之間的這個comparison中,我們已經知道SQL CE通過使用圖像數據類型來支持二進制(BLOB)存儲。
圖片 =可變長度二進制數據 與2^30-1 (1,073,741,823)個字節的最大長度。存儲是以字節爲單位的值的長度的 。
圖片應該做我認爲的工作。
我在這裏做錯了什麼?這是一個錯誤?
注:
我也試過的MaxLength數據註釋:
[Column(TypeName = "image")]
[MaxLength(int.MaxValue)]
public byte[] Photo { get; set; }
,但我得到這個異常:
Binary column with MaxLength greater than 8000 is not supported.
編輯:
我發現post關於發佈的EF 4.1。它具有如下:
默認長度的變化對非關鍵 字符串和二進制列從「128」 到「最大」。 SQL精簡不支持 「最大」欄目,對 SQL精簡設置額外的Code First 會議時會設置一個默認長度4000 大約有 包括在最近的博客 後的變化更多詳細資料(鏈接低於)。
好吧好吧好吧...我能得到它的工作的唯一辦法是做什麼的描述here,也就是設置DbContext.Configuration.ValidateOnSaveEnabled = false
。正如帖子所示,這是一種解決方法。
有多大是你的形象裏? – 2011-04-21 15:00:45
@Alexandre:它是3 MB。 – 2011-04-21 15:08:01