2016-03-29 10 views
2

Ich arbeite an der ASP.NET MVC-Anwendung, die EF für die Arbeit mit der Datenbank verwendet. Ich musste eine Zeichenfolgeneigenschaft ändern, die das Attribut StringLength(1000) hatte und in der Spalte nvarchar(1000) in der Datenbank zugeordnet wurde.Validierung des Entitätsrahmen-Validierungsfehlers nach dem Aktualisieren der Datenbank und Ändern des Modells

Ich aktualisierte die Datenbank, um nvarchar(max) wegen neuerer Anforderungen zu verwenden, und entfernte StringLength(1000) Attribut aus der Modellklasse.

Das Problem ist. Jedes Mal, wenn ich eine neue Entität einfügen möchte, die diese Eigenschaft mit einer Länge von mehr als 1000 hat, erhalte ich einen Validierungsfehler, der besagt, dass es nur 1000 Zeichen sein kann. Wenn es niedriger ist, funktioniert alles wie erwartet.

Das Feld muss ein String- oder Array-Typ mit einer maximalen Länge von '1000' sein.

Ich habe keine Ahnung, woher dieser Fehler kommt. Es gibt keine Trigger oder gespeicherten Prozeduren. Ich versuchte auch, Attribut MaxLength oder StringLenght(int.maxInt) zu verwenden, aber erhielt den Fehler. Es gibt auch keine zusätzliche Konfiguration mit Fluent API.

EDIT: Leider sieht es nicht wie dumm Problem mit nicht neu zu erstellen Lösung. Ich habe es jetzt zweimal versucht (+ Cleanup) und das Problem bleibt bestehen.

LÖSUNG: Aus irgendeinem Grund gibt es aus internen Gründen eine andere Modellklasse für dieselbe Entität im Projekt. Es war komplett ohne einzelne Attribute zu seinen Eigenschaften. Nachdem MaxLength zu dieser einzelnen Eigenschaft hinzugefügt wurde, funktioniert es.

+3

Sind Sie sicher, dass Sie nicht nur eine alte DLL in Ihrer Ausführung Montage mit? –

+1

Entweder Sie haben die Lösung nicht bereinigt und neu erstellt und verwenden daher eine veraltete DLL, oder Sie haben 'StringLength (1000)' an anderer Stelle definiert. – user1666620

+1

Schauen Sie sich dieses an. Möge dies dir helfen. http://stackoverflow.com/questions/5414611/entity-framework-validation-confusion-maximum-string-length-of-128 –

Antwort

1

Da die Datenbank nicht neu generiert werden kann, besteht die Lösung darin, eine partielle Klasse zu implementieren und die benutzerdefinierte Validierung für Ihr Feld zu verwenden. Es ist nicht so sauber, aber es sollte funktionieren.

Hinweis: Ihre bereits eine partielle Klasse in diesem Fall

Bitte Referenz this MSDN Article

Verwandte Themen