2011-04-27 30 views
0

我有一個屬性的類:NHibernate的:讀取MySQL的Blob字段 - 值返回爲 「System.Byte []」

virtual public string Data { get; set; } 

example.hbm.xml結合,爲:

<property name="Data" type="string" column="data" ></property> 

在MySQL中的表與創建:

CREATE TABLE `xxx` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, 
`data` blob, 
PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=binary; 

我可以成功地寫入到數據庫,我可以看到在寫正確的列中的文本。

當我嘗試從此表讀取記錄時,'Data'屬性的值是'System.Byte []'。這也是這個屬性的價值。它的類型是'System.String'。

怎麼辦?預先感謝任何線索。

我也嘗試過charset = UTF8。

我也在映射文件中嘗試過type =「StringClob」。

感謝 Tymek

回答

3

你可能需要讀取和寫入這是一個byte []。所以你的財產定義會看起來像這樣:

public virtual byte[] Data { get; set; } 

除了這個改變,你需要改變你的映射類型。我不確定這是什麼類型。我認爲這可能是一團糟。

如果需要,您可以輕鬆地將此數據轉換爲字符串。

1

我不是MySQL專家,但您可能希望列類型爲text而不是blob

就這樣,type="StringClob"應該工作

+0

你是完全正確的,但作爲數據庫架構已經到位,我會註明「它讀成字節[]」爲最佳答案。 – mayu 2011-04-28 00:56:06

+0

@Tymek:沒關係。請記住,如果您想將其作爲文本進行閱讀,則必須使用編碼。 – 2011-04-28 01:20:29