NHibernate 中使用 nvarchar(max) 类型
在 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,你要确认一下你的版本。
NHibernate 中使用 nvarchar(max) 类型的更多相关文章
- Sql server中的 nvarchar(max) 到底有多大?(转载)
问题: SQL server中的nvarchar(max)最大的长度是4000个字吗? 如果字段的内容超过4000个字时用什么类型呢?text 还是binary?他们的最大长度是多少?比如字段放的是长 ...
- NVARCHAR(MAX) 的最大长度
本文使用的环境是SQL Server 2017, 主机是64位操作系统. 大家都知道,Micorosoft Docs对 max参数的定义是:max 指定最大的存储空间是2GB,该注释是不严谨的: nv ...
- sql中NVARCHAR(MAX) 性能和占空间分析 varchar(n),nvarchar(n) 长度性能及所占空间分析
varchar(n),nvarchar(n) 中的n怎么解释: nvarchar(n)最多能存n个字符,不区分中英文. varchar(n)最多能存n个字节,一个中文是两个字节. 所占空间: nvar ...
- sql中nvarchar(max)长度测试
nvarchar(max)长度测试:在使用convert强制类型转化之后 文本长度可以突破8000的上限.并且nvarchar(max)的最大长度可达到2^31以下为验证SQL: Declare @A ...
- SQL 2005中char、nchar、varchar、ntext and nvarchar(max)的区别
原文地址 MS SQL大值数据类型varchar(max).nvarchar(max).varbinary(max) 在MS SQL2005及以上的版本中,加入大值数据类型(varchar(max). ...
- SQL Server中VARCHAR(MAX)和NVARCHAR(MAX)使用时要注意的问题(转载)
在Microsoft SQLServer2005及以上的版本中,对于varchar(n).nvarchar(n)和varbinary(n)有了max的扩展.可以使用如:varchar(max).nva ...
- nhibernate 配置nvarchar(max)
若你真的需要一个nvarchar(max)的sql存储空间时,记得增加 .CustomType("StringClob") Demo:Map(x => x.ContentM ...
- sql中varchar(max),取代text类型
SQL Server 2005之后版本:请使用 varchar(max).nvarchar(max) 和 varbinary(max) 数据类型,而不要使用 text.ntext 和 image 数据 ...
- MS SQL大值数据类型varchar(max)、nvarchar(max)、varbinary(max)
在MS SQL2005及以上的版本中,加入大值数据类型(varchar(max).nvarchar(max).varbinary(max) ).大值数据类型最多可以存储2^30-1个字节的数据. 这几 ...
随机推荐
- taglib例子
jsp中的taglib有点类似asp.net中的customer control.自定义标签. 一个最简单的taglib使用例子:检查用户是否已经被登陆. 新建一个class: CheckLoginT ...
- css3之transform的应用
一.利用transform实现图片额外显示 效果图如下 初始状态:
- PowerShell连接中国Azure
由于China Azure与Global Azure属于不同的服务,适用于Global Azure的命令并不完全适用于China Azure.目前,Add-AzureAccount命令地址指向Glob ...
- 服务器判断客户端为移动端还是PC端
public void ProcessRequest(HttpContext context) { context.Response.ContentType = "text/html&quo ...
- RESTful API 简书
RESTful API 概述 参考地址 RESTful架构是一种流行的互联网软件架构,它结构清晰,符合标准,易于理解,扩展方便.REST是Representational State Transfer ...
- 228. Summary Ranges
Given a sorted integer array without duplicates, return the summary of its ranges. For example, give ...
- 黄聪:如何用Jquery或者插件解除网页禁用右键复制的限制(转)
1.随便打开一个网址,放到收藏夹中. 2.复制下面的代码,替换原来网址的URL 选中复制以下代码 javascript:(function(){var doc=document;var bd=doc. ...
- 将List<Map>中的datas转换为json格式写入文件
private static boolean writeToTextFileByJson(List<Map<String, Object>> datas, String tit ...
- JAVA final关键字,常量的定义
final(最终)是一个修饰符1.final可以修饰类,函数,变量(成员变量,局部变量)2.被final修饰后的类不可以被其它类继承3.被final修饰后的方法(函数)不可以被重写4.被final修饰 ...
- JAVA 匿名对象
/* 匿名对象: 没有名字的对象 匿名对象的使用方式之一: 当对对象方法只调用一次时,我们可以用匿名对象来完成,比较简化. 匿名对象的使用方式之二: 匿名对象可以被当做实参传递 */ class Ca ...