5

I'm trying to make NHibernate generate my schema/SQL 2008, and using the mapping below it keeps wanting to create an nvarchar(255) column instead of text...any ideas?

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

Thanks!

Webjedi
  • 4,677
  • 7
  • 42
  • 59

3 Answers3

8

The problem is specifying the name of the column twice...once I took it and the length out of the property element it worked perfectly

 <property name="AnnouncementText" type="StringClob">
  <column name="AnnouncementText" sql-type="text"/>
</property>
Webjedi
  • 4,677
  • 7
  • 42
  • 59
6

I'm used to SQL Server 2005 and the dialect it uses, but I presume you can do something similar. Since nvarchar(n) allows n up to 4000, a value above this will use nvarchar(max).

I presume that SQL Server 2000, which it sounds like you're using, does something similar once you hit the limit. If I read the NHibernate code correctly (NHibernate.Dialect.MsSql2000Dialect..ctor()) you get ntext once you pass 0xFA0 = 4000 characters.

<property name="AnnouncementText" column="AnnouncementText" type="string" length="10000"/>
sisve
  • 19,501
  • 3
  • 53
  • 95
  • 1
    Ooops forgot to mention I'm using SQL 2008 but with the 2005 dialect, but I'm actually trying to make a Text column, not an nvarchar(max). – Webjedi May 26 '09 at 20:37
  • 1
    Btw, you should consider changing your text/ntext columns no varchar(max)/nvarchar(max) in 2005 and 2008 as the formers are being deprecated. – Marc Climent Apr 20 '10 at 10:54
-2

this won't help at all, but I remember the good old days ;-)...

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

)
KM.
  • 101,727
  • 34
  • 178
  • 212
  • 1
    awh come on! I just find it so ironic that you have to struggle so hard to make a fancy auto-magical tool like NHibernate do something so simple! – KM. May 27 '09 at 19:31