web-dev-qa-db-fra.com

Mise à jour du modèle de structure d'entité

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

21
Owais Qureshi

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.

59
Shawn de Wet

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.

12
Chinh Phan

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
2
Tomas Kubes

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.

1
MSRS

aller au fichier xml MyModel.edmx, changer le binaire en chaîne a résolu mon problème