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个字节的数据. 这几 ...
随机推荐
- VS2010打开项目时,出现“已经在解决方案中打开了具有该名称的项目”问题的解决方案
用的是VSS代码管理.一打开解决方案就看到有个类库不能加载. 解决方法: 直接右键编辑无法加载的类库,或者记事本编辑有问题类库的csproj文件, 删除以下几行: <SccProjectName ...
- Python 数据排序和列表迭代和列表推导应用
1.In-place sorting 原地排序 data=[6,4,5,2,3,1] print ('before sort', data) data.sort() print ('after sor ...
- VoLTE、呼叫等待(保持)
VoLTE 的出现是手机通话的革命,VoLTE带来更好通话质量,更快的接通时间,接近0掉线这些特点,还可以一边通话一边上网,一方面VoLTE需要运营商的支持,另外一方面也需要手机终端的支持. 什么手机 ...
- android显示证书sha1
创建证书可以用命令 keytool -genkey -v -keystore android.keystore -alias android -keyalg RSA -validity 或者andro ...
- hi35183e增加exfat文件系统的支持
64G-128G的tf卡文件系统格式为exfat,而hi3518e默认只支持fat32格式的tf卡.为了挂载64G以上的tf卡,只能将sd卡先格式化成FAT32.鉴于exfat性能比FAT32强,因此 ...
- js常用方法收集
JS获取地址栏制定参数值: //获取URL参数的值 function getUrlParam(name){ var reg = new RegExp("(^|&)"+ na ...
- 如何添加WebService调用时的用户认证
场景: 当把发布好的WebService地址或WSDL提供给调用方时,需要对方先进行身份的认证通过后才允许接口的进步访问.而不是公开的谁都可以调用. 解决: 1.在IIS中设置对应网站的目录访问权限. ...
- [JS]鼠标事件穿透的问题
今天制作登陆窗口的效果时碰到的一个问题,如下: 标签结构如下: <div id="loginFrame"> <form class="loginFram ...
- NeHe OpenGL教程 第三十三课:TGA文件
转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...
- tuple解包给类的构造函数
首先我们的第一步当然是将tuple解包.tuple提供了一个get函数来获取第N个元素.例如: get<1>(make_tuple(...)); 要将一个tuple全部拆解,就可以使用通过 ...