Je viens de commencer à utiliser EF et je l’ai trouvé cool, mais j’ai rencontré un problème,
Problème:
J'ai changé le schéma de base de données d'une colonne dans la table User. C'était Varbinary (50). Je l'ai ensuite changé en VarChar (50), puis dans le concepteur MyModel.edmx, j'ai choisi "Mettre à jour le modèle à partir de la base de données. ", après avoir cliqué sur terminer, j’ai reçu cette erreur.
Erreur:
Erreur 2019: Le mappage de membres spécifié n'est pas valide. Le type 'Edm.Binary [Nullable = False, DefaultValue =, MaxLength = 100, FixedLength = False]' du membre . 'Email' dans le type 'LearnDBModel.User' n'est pas compatible avec SqlServer.varchar [Nullable = False, DefaultValue =, MaxLength = 50, Unicode = False, FixedLength = False] 'du membre' Email ' dans le type 'LearnDBModel.Store.User'.
Laissez-moi savoir comment résoudre ce problème
J'ai déjà rencontré des problèmes similaires auparavant et j'ai découvert que la solution était de supprimer le tableau du modèle. Enregistrez et fermez le modèle. Rouvrez ensuite le modèle et rajoutez le tableau.
La solution de Shawn de Wet fonctionne bien, mais si vous ne voulez pas supprimer la table (par exemple, la relation avec d’autres tables ..), vous pouvez utiliser une autre solution: Ouvrez votre fichier edmx avec l’éditeur xml, Ctrl + F vers trouver une ligne semblable à
Property Name = "Email" Type = "Binary" Nullable = "false" MaxLength = "50" FixedLength = "false"
Mettez-le à jour pour:
Property Name = "Email" Type = "String" Nullable = "false" MaxLength = "50" Unicode = "false" FixedLength = "false"
Enregistrez-le et reconstruisez.
Beaucoup de fichiers dans le modèle EF reçoivent f ***** d. Supprimer et ajouter l'entité ne suffisait pas. Les entités étaient dupliquées comme table, table1, table_result, table1_result, table_result1, etc. ... La mise à jour du modèle mettait à jour les références dupliquées au lieu de l'original.
Je dois ouvrir le bloc-notes et corriger manuellement ces fichiers:
EFModel.Context.cs
EFModel.edxm
Et supprimez ces fichiers:
obj\Debug\edmxResourcesToEmbed\MYEfModel.csdl
obj\Debug\edmxResourcesToEmbed\MYEfModel.msl
obj\Debug\edmxResourcesToEmbed\MYEfModel.ssdl
Pas besoin de s'inquiéter à ce sujet. Sélectionnez la table affectée dans le modèle. Si vous observez, vous y trouverez un nouveau correctif de nom de colonne avec un entier (ce comportement est uniquement dû au changement de type de données de cette colonne).
Exemple si votre nom de colonne est "Samplecolumn", après avoir mis à jour le modèle à partir de la base de données, vous obtiendrez une nouvelle colonne avec Samplecolumn1. Vous pouvez maintenant simplement supprimer l'ancienne colonne "Samplecolumn" et renommer la nouvelle colonne "Samplecolumn1" en "Samplecolumn" à l'aide de la fenêtre de propriétés de la catégorie générale.
Il suffit de construire votre application. L'erreur aura disparu.
aller au fichier xml MyModel.edmx, changer le binaire en chaîne a résolu mon problème