如何使用文本字段而不是nvarchar(255)使Nhibernate生成表

时间:2009-05-26 20:22:19

标签: nhibernate nhibernate-mapping

我正在尝试让NHibernate生成我的架构/ SQL 2008,并且使用下面的映射它一直想要创建一个nvarchar(255)列而不是文本......任何想法?

    <property name="AnnouncementText" column="AnnouncementText" type="StringClob">
  <column name="AnnouncementText" sql-type="NTEXT"/>
</property>

谢谢!

3 个答案:

答案 0 :(得分:8)

问题是指定列的名称两次...一旦我接受它,并且属性元素的长度完全正常工作

 <property name="AnnouncementText" type="StringClob">
  <column name="AnnouncementText" sql-type="text"/>
</property>

答案 1 :(得分:6)

我已经习惯了SQL Server 2005及其使用的方言,但我认为你可以做类似的事情。由于nvarchar(n)允许n最多为4000,因此高于此值的值将使用nvarchar(max)。

推测一旦你达到极限,它听起来像你正在使用的SQL Server 2000会做类似的事情。如果我正确读取NHibernate代码(NHibernate.Dialect.MsSql2000Dialect..ctor()),一旦传递0xFA0 = 4000个字符,就会获得ntext。

<property name="AnnouncementText" column="AnnouncementText" type="string" length="10000"/>

答案 2 :(得分:-2)

这根本没有用,但我记得过去的美好时光; - )......

create table YourTable
(
    ...
    AnnouncementText     text null
    ...

)