NHibernate:读取mysql Blob字段 - 返回的值为" System.Byte []"

时间:2011-04-27 09:22:39

标签: c# mysql nhibernate nhibernate-mapping

我有一个属性的类:

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;

我可以成功写入数据库,我可以看到列中的文本正确写入。

当我尝试从此表中读取记录时,数据的值为&#39;属性是System.Byte []&#39;。这也就是这个属性的价值。它的类型是System.String&#39;。

怎么办?提前感谢任何线索。

我也试过charset = UTF8。

我也尝试过type =&#34; StringClob&#34;在映射文件中。

由于 Tymek

2 个答案:

答案 0 :(得分:3)

您可能需要以字节[]的形式读取和写入。所以你的属性定义会是这样的:

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

除了此更改之外,您还需要更改映射中的类型。我不确定是什么类型的。我认为这可能是blob。

如果需要,您可以轻松地将此数据转换为字符串。

答案 1 :(得分:1)

我不是MySQL专家,但您可能希望列类型为text而不是blob

有了这个,type="StringClob"应该可以工作