"Zeichenfolgen-oder Binärdaten würden abgeschnitten." linq Ausnahme, nicht finden können, welches Feld überschritten hat max Länge
Zeichenfolgen-oder Binärdaten würden abgeschnitten werden. linq Ausnahme, nicht finden können, welches Feld überschritten hat max Länge.
habe ich rund 350 Felder. ich überprüfte jede und jeder textbox maxlength mit Datenbank-Feld maxlength, alles scheint richtig zu sein, aber ich bekomme immer noch die Ausnahme.
bitte helfen
- überprüfen aktualisierter link
- Vergessen Sie nicht, mark zu beantworten als angenommen, wenn Sie bekam die Informationen, die Sie wollen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Fehlerbehebung dieser Fehler mit 350 Feldern kann extrem schwierig sein und SQL Server Profiler nicht viel hilft in diesem Fall, (finden Sie die lange Zeichenfolge in der generierten SQL zu finden ist wie eine Nadel im Heuhaufen).
So, hier ist ein automatisierten Weg, um die tatsächlichen Zeichenfolgen, die überschreitung der Größenbeschränkung der Datenbank. Dies ist eine Lösung, die da draußen auf dem internet, in verschiedenen Formen. Sie wahrscheinlich nicht wollen, lassen Sie es in Ihre Produktions-code, da das Attribut bzw. die Eigenschaft für die Suche ist ziemlich ineffizient, und es werden zusätzliche overhead bei jedem speichern. Ich würde nur werfen Sie es in Ihrem code, wenn Sie dieses problem zu begegnen, und entfernen Sie Sie, wenn Sie fertig sind.
, Wie es funktioniert: es durchläuft alle Eigenschaften eines Objekts, das Sie zu speichern, finden Sie die Eigenschaften mit einer LINQ to SQL -
ColumnAttribute
. Dann, wenn dieColumnAttribute.DbType
enthält "varchar", wissen Sie, es ist eine Zeichenfolge, und Sie können analysieren, dass ein Teil des attributes zu finden, die maximale Länge.Hier ist, wie es zu benutzen:
Und hier ist die Methode:
Console.WriteLine
mitif (!string.IsNullOrEmpty(currentValue) && maxLength != 0 && currentValue.Length > maxLength) { propInfo.SetValue(testObject, currentValue.Substring(0, maxLength)); } else if (currentValue == "") { propInfo.SetValue(testObject, null); }
Diese wird automatisch schneiden Sie die Zeichenfolge, und legen Sie leere Zeichenfolgen zunull
.Wenn Sie überprüft die max Länge jedes Textfeld, um die maximale Länge für jedes Feld, ist es durchaus möglich, den Fehler geschieht durch einen trigger. Gibt es Trigger für die Tabelle?
ich die max Länge für alle 350 Felder. ich denke, das ist der einzige Weg. vielen Dank für Ihre Unterstützung.