如何在SQLite / NHibernate组合中正确映射小二进制对象(错误的类型亲和力)?

时间:2010-07-05 13:09:16

标签: sql sqlite nhibernate-mapping blob system.data.sqlite

尝试在byte[]中存储C#/。NET类型SQLite的属性。这是我的映射:

<class name="MyClass" lazy="false" table="MyTable">
   <property name="MyProperty" type ="BinaryBlob" access="property" />
</class>

SQL server中,即使没有映射中的显式type="BinaryBlob",它也会像魅力一样工作。在SQLite中,我尝试了SQL CREATE TABLE语句和NHibernate数据类型之间的各种类型组合,但每次都得到“映射无法编译”的异常(因为类型不兼容)或从获取的数据类型到映射类型的转换是不可能的异常。

insert语句中MyProperty的值如下所示:0x7C87541FD3F3EF5016E12D411900C87A6046A8E8

更新:继续调试System.Data.SQLite.SQLiteDataReader - 看起来无论SQL类型是什么(尝试decimalblobunsigned big int) - 类型亲和力始终为text

我做错了什么(技术上或一般情况下)?欢迎提出任何建议。

2 个答案:

答案 0 :(得分:0)

你看过了吗How do i store and retrieve a blob from sqlite? ayende.com上还有一篇文章:Lazy loading BLOBS and the like in NHibernate。这些链接可能会帮助您朝着正确的方向前进,看看发生了什么。

答案 1 :(得分:0)

text亲和力的原因是数据已从 CSV (以逗号分隔的值)导入到表格中文件。使用正确的INSERT语句切换到 SQL 文件可以解决问题。