2011-03-29 27 views
0

SubSonic是否提供任何機制來存儲圖像(以byte []格式轉換)?
有人可以幫助擺脫這個錯誤?嘗試使用SubSonic將圖像存儲爲字節數組時出錯

數據庫:SQL Server 2005的
發展enviornment:ASP.NET(C#)
亞音速版本:2.2.1.0

數據類型的DB:圖像
數據類型在亞音速生成DAL:DbType.Binary
數據類型中的代碼:字節[]圖像

錯誤在語句:

DB.Insert().Into(DamageItems.Schema, "ImageID", "Cost","Image").Values(imageID, cost,image).Execute(); 

查詢表達式在監視窗口:

{INSERT INTO [dbo].[ImageItems](ImageID,Cost,Image) 
VALUES (@ins_ImageID,@ins_Cost,@ins_Image) 
} 

錯誤:

Failed to convert parameter value from a Byte[] to a String.

+0

鋤頭在插入語句中是'DamageItems',但在監視窗口中是'ImageItems'? – marapet 2011-03-30 05:54:32

回答

0

你可以試試下面的辦法:

DB.Insert().Into<DamageItems>() 
    .Value(DamageItems.ImageIDColumn, imageID) 
    .Value(DamageItems.CostColumn, cost) 
    .Value(DamageItems.ImageColumn, image) 
    .Execute(); 

也許指定TableColumn對象時的類型被正確識別(現在寫這個不能測試)。

如果這不起作用,我還會檢查是否命名帶有數據類型名稱的列(image)會導致任何問題。

順便說一句,從SQL 2005開始,image已被棄用,建議使用varbinary(max)來代替。

+0

對不起忘記提及更多詳情。我正在使用RepositoryRecord而不是activeRecord。因此,當我使用方法DB.Inser()。進入()時,出現如下錯誤: 「類型'Damages.DAL.DamageItems'不能用作泛型類型或方法SubSonic中的類型參數'T'。 Insert.Into (params string [])'。沒有從'Damages.DAL.DamageItems'到'SubSonic.ActiveRecord '的隱式引用轉換。亞音速是否有使用RepositoryRecord來處理它的功能。 – Jack 2011-03-31 16:25:25

+0

在使用圖像之前,我嘗試了varbinary(max)作爲db類型,但是有相同的錯誤。還嘗試更改數據類型名稱,沒有工作。 – Jack 2011-03-31 16:30:32

+0

我使用了DB.Save(this);存儲,並工作。 (我把圖像保存爲varbinary(MAX),在subsonic生成的類中它是以DbType.Binary的形式出現的,在我的代碼中,我將圖像數據傳遞爲byte [])。無論如何感謝Marapet(http://stackoverflow.com/users/63733/marapet),但該方法是用於活動記錄,因爲我正在使用存儲庫記錄。 – Jack 2011-04-19 13:20:04

相關問題