Nhibernate 过长的字符串报错 dehydration property

本文介绍了一个使用NHibernate框架时遇到的问题:当输入文本过长时,会在4000字符处被截断。文章详细解释了问题的原因在于NHibernate默认将字符串字段映射为SQL Server的nvarchar类型,并提供了通过将字段类型改为StringClob来解决此问题的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  用nhibernate发现一个错误,一个文本输入框输入字符过长,会被在固定的地方截断,经过试验发现4000个字符8000个字节的时候会被截断。
  看了一下映射文件中的xml配置,发现映射字段如下:
  <property column="Content" type="String" name="Content" length="2147483647" />
  虽然该字段的长度被设置的足够大,但是使用过程中还是被截断了。
  查看了一下nhibernate的源码,发现在实际操作过程中发现nhibernate对string的处理时候自动将string类型按照数据中的nvarchar类型处理,最大长度4000字符,超过后自动截掉。查看了一下nhibernate 1.02的接口类型发现有一个StringClob,是处理长字符串的。
  改变了xml里面的类型设置后,测试通过。
  <property column="Content" type="StringClob" name="Content" length="2147483647" />
测试通过.......

转自
http://45518862.blog.51cto.com/164403/47175
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值