加入收藏 | 设为首页 | 会员中心 | 我要投稿 威海站长网 (https://www.0631zz.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长百科 > 正文

在Oracle和NHibernate中映射长文本字符串

发布时间:2021-03-18 09:08:47 所属栏目:站长百科 来源:网络整理
导读:将NHibernate 3.1与SQL Server和Oracle DB一起使用时,我们需要存储一个长度超过4000个字符的文本字符串.文本实际上是 XML,但这并不重要 – 我们只想将其视为原始文本.使用SQL Server,这很容易.我们将该列声明为NVARCHAR(MAX)并将其映射到: property name="M

将NHibernate 3.1与SQL Server和Oracle DB一起使用时,我们需要存储一个长度超过4000个字符的文本字符串.文本实际上是 XML,但这并不重要 – 我们只想将其视为原始文本.使用SQL Server,这很容易.我们将该列声明为NVARCHAR(MAX)并将其映射到:

<property name="MyLongTextValue" length="100000"/>

使用length属性告诉NHibernate期望一个字符串可能超过4000个字符.

对于我的生活,我无法弄清楚如何在Oracle 11g上完成这项工作.我已经尝试将该列声明为XMLTYPE和LONG,但没有成功.在第一种情况下,我们最终得到ORA-01461:只能在尝试插入行时插入LONG列才能绑定LONG值.在第二种情况下,数据正确插入,但在查询时返回为空字符串.

有谁知道如何使这项工作?答案必须与SQL Server和Oracle兼容.我宁愿不必编写自定义扩展,例如用户类型和驱动程序子类.谢谢.

解决方法

你应该使用这样的东西

<property name="MyLongTextValue" length="100000" type="StringClob" 
not-null="false"/>

这应该适用于Oracle CLOB类型和SqlServer NTEXT类型.

确保模型上的属性可以为空

public virtual string MyLongTextValue {get;set;}

在处理CLOB时,应始终使用Oracle.DataAccess

(编辑:威海站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读