尝试在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类型是什么(尝试decimal
,blob
,unsigned big int
) - 类型亲和力始终为text
。
我做错了什么(技术上或一般情况下)?欢迎提出任何建议。
答案 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 文件可以解决问题。