2009-05-06 7 views
3

Kürzen habe ich eine nvarchar (2000) Spalte in einer Datenbank Server 2005 SQL und haben dies in NHibernate wie abgebildet:automatisch Strings in NHibernate/SQL Server

<property name="Query" column="`Query`" type="String" length="2000" not-null="false"/> 

Die DTO-Klasse nur eine String-Eigenschaft präsentiert:

public virtual string Query { get; set; } 

Wenn ich die Abfrage einer Reihe von> 2000 Zeichen gesetzt erhalte ich eine Ausnahme von SQL Server auf die Wirkung von:

"String oder Binärdaten wären abgeschnitten. Die Aussage wurde beendet.“

Was ich will, ist für dieses Abschneiden nur automatisch geschehen und still. Ich konnte die virtuelle Eigenschaft außer Kraft setzen und das Abschneiden auf dem Eigenschaftssatz erzwingen, aber das Gefühl, es sollte ein Weg sein, dieses Verhalten standardmäßig entweder über die NHibernate-Mapping oder auch als SQL-Server-Einstellung zu erhalten.

bin ich etwas fehlt ... ich will nicht das DB-Schema ändern längere Strings zu ermöglichen.

Antwort

4

Erstellen Sie einen benutzerdefinierten Benutzertyp, der die Zeichenfolge abschneidet, wenn sie länger als 2000 Zeichen ist. Hier ist ein Beispiel für creating User Type

<property name="Query" type="Common.Nhibernate.Types.StringTruncType, Common" column="`Query`" type="String" length="2000" not-null="false"/> 
Verwandte Themen