2017-04-30 4 views
3

J'ai un premier projet de code EF existant qui a créé la base de données avec toutes les colonnes nvarchar dans la base de données. Maintenant, je commence un autre projet sur la même base de données à des fins statistiques. Ce nouveau projet utilise cependant EF core comme pointant vers la même base de données. Quand j'ai essayé de lancer le nouveau projet, cela me donne l'erreur suivante. Le type de données 'VARCHAR' n'est pas supporté sous cette forme.Si vous spécifiez la longueur explicitement dans le nom du type, par exemple 'VARCHAR (16)', ou supprimez le type de données et utilisez des API telles que HasMaxLength pour permettre EF choisir le type de données. " Maintenant, comme j'ai déjà des données de production dans la base de données, je veux avoir un impact minimum sur les types de colonnes, mais je veux quand même utiliser le cœur EC dans mon nouveau projet. J'ai tellement de colonnes nvarchar donc la configuration de la configuration sur une table individuelle est un travail difficile. Tout le monde peut me diriger dans la bonne direction?EF core pour prendre en charge nvarchar

Répondre

0

Cela semble être un problème avec la version 2.0 de EntityFrameworkCore: https://github.com/aspnet/EntityFrameworkCore/issues/9188

Censé se fixe à 2.1 afin que vous voudrez peut-être attendre jusque-là.

Sinon, ils suggèrent la fixation manuellement comme ceci:

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

En db-first, il devrait le faire automatiquement. –

0

J'utilise l'annotation de données et il fonctionne encore. [Column(TypeName = "varchar(50)")]

+0

Et j'utilise DB d'abord et ça ne marche pas. –

+0

Je pensais que net core ne supportait plus DB d'abord, et dans mon cas, im en utilisant d'abord le code –

+0

Qui dans leur bon sens utiliserait le code en premier? L'autoroute de l'enfer ... –