• 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,你要确认一下你的版本。 

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

  • 相关阅读:
    Renderscript 浅析 (三)
    renderscript 浅析(二)
    renderscript 浅析(一)
    小米MACE开源框架搭建
    Word2vec
    最优化算法(牛顿、拟牛顿、梯度下降)
    聚类算法一(Kmeans、层次类聚、谱类聚)
    分类算法三(贝叶斯)
    js 创建方法
    XML与JSON的区别
  • 原文地址:https://www.cnblogs.com/haogj/p/3656470.html
Copyright © 2020-2023  润新知