用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" />
看了一下映射文件中的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