2017-04-30 3 views
3

Ich habe ein vorhandenes EF-Code-Projekt, das die Datenbank mit allen Nvarchar-Spalten in der Datenbank erstellt hat. Jetzt starte ich ein weiteres Projekt auf der gleichen Datenbank für statistische Zwecke. Dieses neue Projekt verwendet EF Core jedoch als Verweis auf dieselbe Datenbank. Als ich versucht habe, das neue Projekt auszuführen, erhalte ich einen Fehler.EF Core zur Unterstützung von Nvarchar

"Datentyp 'VARCHAR' wird in diesem Formular nicht unterstützt. Geben Sie die Länge explizit im Typnamen an, zum Beispiel 'VARCHAR (16)', oder entfernen Sie den Datentyp und verwenden Sie APIs wie HasMaxLength EF wähle den Datentyp. "

Jetzt, da ich bereits Produktionsdaten in der Datenbank habe, so möchte ich minimale Auswirkungen auf die Spaltentypen machen, aber immer noch wollen, EC-Kern in meinem neuen Projekt zu verwenden. Ich habe so viele Nvarchar-Spalten, dass es schwierig ist, die Konfiguration für einzelne Tabellen festzulegen. Jeder kann mich in die richtige Richtung weisen?

Antwort

0

Dies scheint ein Problem mit der Version 2.0 von EntityFrameworkCore zu sein: https://github.com/aspnet/EntityFrameworkCore/issues/9188

Vermeintliche in 2.1 festgelegt werden, so können Sie bis dahin warten möchten.

Ansonsten empfiehlt Fixierung sie manuell wie folgt aus:

  entity.Property(e => e.Comments) 
       .HasColumnName("Comments") 
       .HasColumnType("nvarchar(4000)"); // <- Add this 
+0

In db-zuerst sollte es dies automatisch tun. –

0

Ich Datenaufbelichtung verwenden und es funktioniert immer noch. [Column(TypeName = "varchar(50)")]

+0

Und ich benutze DB zuerst und es funktioniert nicht. –

+0

ich dachte, dass Netzkern DB zuerst nicht mehr unterstützte, und in meinem Fall bin ich mit Code zuerst –

+0

Wer im richtigen Verstand würde Code zuerst benutzen? Die Autobahn zur Hölle ... –