NHibernate 中使用 nvarchar(max) 类型
2024-10-15 14:53:52
在 NHibernate 中使用字符串类型,默认会映射到字符类型,在 SQLServer 中,NVARCHAR 类型最大长度是 4000 字符,如果超过 4000,比如使用 SQL Server 中的 nvarchar(max),那么就需要特别配置。
比如说,我们在实体中定义了一个名为 Content 的字段。
public virtual string Content { set; get; }
默认情况下,对应的数据库字段定义会自动生成为
Content NVARCHAR(255) null
如果我们希望它的长度是 NVARCHAR(MAX) 怎么办呢?
很容易找到的说明是使用 StringClob 类型,这是 NHibernate 内部定义的一个类型,用来说明这个字段是一个长字符串类型,你的字段属性是字符串类型?没有问题,NHibernate 知道这一点的,你完全不用修改你的实体定义。
<property name="Content" type="StringClob" />
那么,你就会看到现在对应的数据库字段定义修改为了你的目标。
Content NVARCHAR(MAX) null
StringClob 太诡异了,你不想使用这个办法,其实也可以直接指定数据库中的字段类型,使用 column 就可以了,通过 sql-type 属性可以直接配置,如下所示。
<property name="Content">
<!-- 对于 nvarchar(max> 类型,需要特殊说明 -->
<column name="Content" sql-type="nvarchar(max)"/>
</property>
你得到的结果和上面的方式是一样的。
太复杂了?有没有更加简单的方式?当然有!
你也可以通过字段的长度来达到目的,在 SQLServer 中,NVARCHAR 类型的最大字符长度是 4000,如果你指定一个大于 4000 的值,比如 4001,就可以达到目的了。如下所示:
<property name="Content" length="4001" >
注意,我是使用的 NHibernate 版本是 3.3.1.4000,你要确认一下你的版本。
最新文章
- Qt编译安装qwt错误moc/xxx Error:126
- 使用用Generic.xaml加载默认的主题资源
- 千呼万唤始出来!—— GG(高仿QQ)终于有移动端了!(技术原理、实现、源码)
- Android 设置EditText光标Curso颜色及粗细
- memcachedb-持久化存储的缓存系统
- Qt5官方demo解析集(36个)
- RasAPI函数实现PPPOE拨号
- 【模拟】Codeforces 711A Bus to Udayland
- [SQL学习笔记][用exists代替全称量词 ]
- promise/bluebird源码
- JavaScript高级程序设计---学习笔记(二)
- 测试一下js是否可用
- VR全景智慧城市-VR大时代
- JVM平台上的响应式流(Reactive Streams)规范
- jQuery -- 光阴似箭(一):初见 jQuery -- 基本用法,语法,选择器
- docker-1-环境安装及例子实践
- struts2:表单标签续(datetimepicker标签)
- Golang命令行拷贝文件
- Twitter REST API, Streaming API
- Luogu P2055 [ZJOI2009]假期的宿舍
热门文章
- [转]UOS 中的虚拟网络设备
- 异步I/O编程实例,异步socket
- 51nod 1150 Logarithm
- 【sql】之使用sql根据身份证查询过生日人数
- 报错:java.lang.IllegalStateException: Cannot call sendError() after the response has been committed(待解答)
- Oracle中in和exists的选择
- (WPF, MVVM) Event 处理
- spark单机模式简单搭建
- PLSQL_数据泵定参数批量导入多表Expdp/Impdp Parfile(案例)
- DBA_Oracle Audit基本概念(概念)