Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to store a non truncated varchar(max) string with NHibernate and Fluent NHibernate

My DB schema has a string as a varchar(max). I have read the other questions concerning setting Length to more than 4000 or 8000 so that it really generates a (n)varchar(max) in the mapping but when I use Length(10000) in my mapping class, the hbm file actually shows length="10000" and if I save an entity with more than 10000 chars, it is actually truncated to exactly 10000 chars.

I don't want any truncation.

(using NH3-alpha2 and FNH trunk)

like image 682
Nicolas Cadilhac Avatar asked Sep 13 '10 15:09

Nicolas Cadilhac


3 Answers

It would appear that this is an old problem which is now resurfacing in NHibernate 3.x builds; you can read about the workarounds here.

Note: I have updated the original link I posted as it was outdated.

like image 105
DanP Avatar answered Nov 07 '22 21:11

DanP


This mapping should work:

<property name="TheProperty" type="StringClob">
  <column name="TheColumn" sql-type="nvarchar(max)" />
</property>

Just look for the fluent equivalent.

like image 17
Diego Mijelshon Avatar answered Nov 07 '22 20:11

Diego Mijelshon


DanP's link is broken. The updated link is:

http://www.primordialcode.com/blog/post/nhibernate-prepare_sql-considerations-mapping-long-string-fields

like image 5
David Peden Avatar answered Nov 07 '22 19:11

David Peden