2010-09-13 7 views
18

Mój schemat DB ma ciąg jako varchar (max). Przeczytałem inne questions dotyczące ustawienia długości na więcej niż 4000 lub 8000 tak, że naprawdę generuje (n) varchar (max) w mapowaniu, ale kiedy używam Length (10000) w mojej klasie mapowania, plik hbm faktycznie pokazuje długość = "10000" i jeśli zapiszę obiekt zawierający więcej niż 10000 znaków, jest on faktycznie obcięty do dokładnie 10000 znaków.Jak przechowywać ciąg znaków varchar (max) nieskróconych za pomocą NHibernate i Fluent NHibernate

Nie chcę żadnego obcięcia.

(za pomocą NH3 ALPHA2 i FNH pień)

Odpowiedz

21

Wydaje się, że jest to stary problem, który jest teraz w nawierzchni NHibernate 3.x buduje; możesz przeczytać o obejściach here.

Uwaga: Zaktualizowałem oryginalny link, który opublikowałem, ponieważ był nieaktualny.

+4

Wywołanie CustomType ("StringClob") to zrobił. Dzięki. –

+0

Pomógł mi również, dzięki –

+0

W pliku odwzorowania hbm po prostu użyj type = "StringClob" zamiast type = "string" i gotowe. To zdecydowanie działa dla NH 3.3, ale spróbuj z dowolną wersją NH> = 3.0. – Oliver

17

Odwzorowanie to powinno działać:

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

Wystarczy spojrzeć za równowartość płynnie.

+2

myślisz, że kiedykolwiek będzie to prawidłowo potraktowane w NHib 3? Coś smutnego, że szczegóły serwera sql są przecieki w mapowaniu w ten sposób ... – DanP

+0

@DanP można otworzyć problem Jira? –

+0

Wierzę, że jest już jeden: http://216.121.112.228/browse/NH-2302 Nawiasem mówiąc ... czy byłbyś zainteresowany datowaną nazwą domeny JIRA czy coś takiego? Posiadanie adresu URL opartego na IP wydaje się trochę ... niewygodne;) – DanP