Wie kann ich Varchar Länge in Linq To SQL erzwingen

8

Wenn ich in Linq To SQL benutze benutzerdefinierte Funktion wie diese

%Vor%

Die resultierende Abfrage enthält immer varchar (8000) als Parametertyp.

Also muss ich den Parametertyp der Funktion ändern, um SQL Server Fehler zu vermeiden.

Kann ich Linq To SQL zwingen, die Länge nicht zu ignorieren, die ich passiere?

P.S. Es gibt das gleiche Problem mit nvarchar (4000).

    
Alexander Ponomarev 11.03.2015, 08:39
quelle

1 Antwort

1

Beim Durcharbeiten von dekompiliertem Code sieht es nicht wirklich so aus, als würde es beim Erstellen der Abfrage auf dieses Attribut achten, und ich sehe keinen Pfad, mit dem Sie es setzen könnten

Dies scheint die Datei zu sein, die die zu verwendende Parametergröße bestimmt.

Ссылка

Dieser Teil innerhalb von InitializeParameter initialisiert die Größe

%Vor%

Dann wird der Ausführungspfad nur auf 8000 für varchars und auf 4000 für nvarchars gesetzt und schaut dieses Attribut nicht wirklich an

%Vor%

diese Aussage

%Vor%

IsFixedSize gibt false für varchar und nvarchar zurück, die Sie hier sehen können

%Vor%

Ich Quelle ging durch den Code während der Ausführung einer Funktion als auch seinen Ausführungspfad zu sehen ... Es scheint auch nicht, als gäbe es keine nützlichen Hooks vor der Ausführung zu ändern .. Der SqlProvider hat nichts nützliches zum Überschreiben oder Hook in entweder ....

    
Shane Neuville 27.03.2015, 04:37
quelle

Tags und Links