2016-04-22 14 views
0

Ich versuche MaxLength (ASP.Net 5, EF7) für String-Eigenschaft in meinem Modell festlegen.Entity Framework 7, MaxLength

Ich kann die Migration überhaupt problemlos anwenden. Sobald die Datenbank erstellt wurde, nachdem 'dnx ef database update' ausgeführt wurde, hat das Modell, für das MaxLength (10) festgelegt wurde, den Datentyp varchar (1) in der Datenbank.

ich die DbContext sowie die Snapshot-Datei überprüft haben, hat die Spalte max legnth 10.

Ich bin nicht sicher, warum Code nicht zuerst die MaxLength Aufnehmen?

Antwort

0

Ich habe das Problem gefunden und ich hoffe, es wird auch anderen helfen.

Es stellte sich heraus, dass ich die Data Annotation sowohl auf den Modellen als auch auf dem dbcontext hatte. Es muss auf einem von ihnen sein.

Ich habe alle Datenanmerkungen wie IsRequired() und HasMaxLength von dbcontext, 'onModelCreating' Methode entfernt und habe sie nur auf meinen Modellen. Ich habe die Datenbank für die InitialSchema-Migration aktualisiert, und alle Datentypen sind jetzt korrekt.

1

Verwenden Sie anstelle von MaxLength (10)StringLength(10).

MaxLength wird von früheren EF-Versionen nur für die Schemagenerierung in der ersten Codemigration verwendet, während StringLength sowohl für Migrationen als auch für die clientseitige Validierung verwendet wird.

Ich kann Ihnen nicht sagen, warum MaxLength es nicht für Sie funktioniert, ist es möglich, dass EF Core in seiner aktuellen Entwicklungsstufe, im Moment nur StringLength berücksichtigt.

+0

Danke für Ihre Antwort. Ich habe es einmal mit StringLength versucht, und habe die Datenbank gelöscht und neu erstellt, indem ich die InitialSchema-Migration nach dem Hinzufügen einer neuen Migration angewendet habe und nicht funktioniert habe. Ich habe auch die InitialSchema-Datei überprüft und festgestellt, dass create table für dieses spezifische Modell den richtigen Datentyp nicht gefunden hat. Es war nur 'varchar' und nicht varchar (10). Wenn ich es manuell ändere, bin ich sicher, dass es funktioniert, aber nicht sicher, warum es nicht vom Modell abholt. – Xerxes1TheGreat

Verwandte Themen