数据库字段为ntext时nhibernate配置文件不对导致页面修改后的数据无法得到
最近又遇一奇怪问题
为产品加入产品描述内容,包括英语、法语等6门语言的描述,而且需要可视化编辑用以网页展示。
当然,首选ckeditor,一个面页放6个ekeditor。
但马上发现问题,有的框能取到值,有的取不到,很容易想到是不是ckeditor这控件一下加载6个太多了导致的问题,后来改为点击文字后再加载,想想这样应该不会有这问题了吧。
但很快,多次测试后,还是有的值能取到有的不能,我测试的时候竟然发现每次输入hi ok这些简单的单词提交没问题,我以为是ckeditor检查拼字的原因,
于是其修改config.js文件:
config.disableNativeSpellChecker = false;
config.scayt_autoStartup = false;
但问题如故!
又是一番上网查资料、不停的测试找规律。
测试发现,输入简短单词没问题,长了出问题,我猛然想到是否是hbm配置文件错了(orm都是用codesmith自动生成的),
果然,配置是这样的:
<property name="Description" type="String">
<column name="Description" length="16" sql-type="ntext" not-null="false"/>
</property>
而持久层文件如下:
virtual public string Description
{
get { return _description; }
set
{
if (value != null && value.Length > 16)
throw new ArgumentOutOfRangeException("Invalid value for Title", value, value.ToString());
_description = value;
}
}
很明显当长度大于16会抛出异常导致值为空(这里看不到抛出的异常)。
一直怀疑是ckeditor的问题,原来是这里的问题,花了大半天时间,晕!
分别修改如下,问题解决:
<property name="Description" type="StringClob">
<column name="Description" length="16" sql-type="ntext" not-null="false"/>
</property>
virtual public string Description
{
get { return _description; }
set
{
_description = value;
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述