首页 > 系统服务 > 详细

NHibernate 中使用 nvarchar(max) 类型

时间:2014-04-12 03:33:36      阅读:606      评论:0      收藏:0      [点我收藏+]

在 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 知道这一点的,你完全不用修改你的实体定义。

bubuko.com,布布扣
<property name="Content" type="StringClob" />
bubuko.com,布布扣

那么,你就会看到现在对应的数据库字段定义修改为了你的目标。

Content NVARCHAR(MAX) null

 StringClob 太诡异了,你不想使用这个办法,其实也可以直接指定数据库中的字段类型,使用 column 就可以了,通过 sql-type 属性可以直接配置,如下所示。

bubuko.com,布布扣
    <property name="Content">
      <!-- 对于 nvarchar(max> 类型,需要特殊说明 -->
      <column name="Content" sql-type="nvarchar(max)"/>
    </property>
bubuko.com,布布扣

你得到的结果和上面的方式是一样的。

太复杂了?有没有更加简单的方式?当然有!

你也可以通过字段的长度来达到目的,在 SQLServer 中,NVARCHAR 类型的最大字符长度是 4000,如果你指定一个大于 4000 的值,比如 4001,就可以达到目的了。如下所示:

<property name="Content"  length="4001" >

 

注意,我是使用的 NHibernate 版本是 3.3.1.4000,你要确认一下你的版本。 

下载地址:http://sourceforge.net/projects/nhibernate/files/NHibernate/3.3.3GA/NHibernate-3.3.3.GA-bin.zip/download

NHibernate 中使用 nvarchar(max) 类型,布布扣,bubuko.com

NHibernate 中使用 nvarchar(max) 类型

原文:http://www.cnblogs.com/haogj/p/3656470.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!