100 votes

Pourquoi est-ce que je reçois cette erreur : Aucun mappage spécifié pour l'EntitySet/AssociationSet suivant - Entity1 ?

Je suis en train d'utiliser Entity Framework 4 avec l'approche Model First.

J'ai commencé le projet, dessiné les entités et généré la base de données. Tout fonctionnait bien.

Ensuite, j'ai eu besoin de revenir en arrière et d'ajouter une autre entité à mon modèle. Cependant, lorsque je fais glisser une entité vers le EDMX, j'ai cette erreur :

entrer la description de l'image ici

D'accord! Il me suffit de mapper Entity1 à une table.. Mais hey! J'utilise l'approche Model First, je m'attends à ce qu'il crée la table pour moi lorsque je génère la DDL.

Comment puis-je contourner cette erreur?

1 votes

Ainsi, pouvez-vous générer un script de base de données à partir de votre modèle ?

5voto

OmegaMan Points 5315

J'ai eu un changement de table et cela a créé une autre entité avec un nombre 1 à la fin (comme MyEntity1 et un MyEntity) comme confirmé par le navigateur de modèle edmx. Quelque chose à propos des deux entités ensemble a perturbé le traitement.

La suppression de la table et sa réintégration ont corrigé le problème.


Notez que si TFS est connecté, alors effectuez une validation de l'edmx après la suppression. Ensuite, et seulement ensuite, récupérez la dernière version et réintégrez-la dans un processus en deux étapes bien défini. Sinon, TFS se trouve confus avec la suppression et la réintégration de l'entité(s) de même nom, ce qui semble causer des problèmes.

0 votes

J'ai eu le même problème après un changement de table. J'ai trouvé les mêmes entités avec un numéro 1 et 2 (MyEntity1, MyEntity2) à plusieurs endroits sous le modèle. J'ai regardé dans chaque branche (Diagrammes, Types d'entité, etc.) et j'ai supprimé chaque instance de MyEntity et MyEntity[n]. Pour être sûr, j'ai fait un "Nettoyer la solution" puis mis à jour depuis la base de données pour réajouter uniquement MyEntity.

5voto

Atul K. Points 21

Une façon plus rapide pour moi a été de supprimer les tables et de les réajouter. Il les a automatiquement cartographiées. :)

2voto

Masoud Darvishian Points 910

Pour ceux qui utilisent l'approche Database First, tout ce que vous avez à faire après avoir inséré une nouvelle entité est de Générer la base de données à partir du modèle à nouveau en faisant un clic droit sur votre fichier .edmx et en sélectionnant Générer la base de données à partir du modèle...

1voto

Willy David Jr Points 4063

Mettre à jour le modèle à partir de la base de données ne fonctionne pas pour moi.

J'ai dû supprimer l'entité en conflit, puis exécuter la mise à jour du modèle à partir de la base de données, enfin reconstruire la solution. Après cela, tout fonctionne bien.

0 votes

Cela a résolu mon problème. Merci Merci

0 votes

Ravi de l'entendre !

0voto

MarcoSantana Points 399
  1. Accédez à l'Explorateur de solutions, cliquez sur le bouton Rechercher
  2. Laissez coché à la fois Rechercher dans le contenu du fichier et Rechercher dans les fichiers externes
  3. Tapez le nom des entités que votre mappage ne reconnaît pas.
  4. Supprimez tous les fichiers LIÉS au problème. Il s'agit probablement de fichiers nommés d'après la même entité manquante. NE supprimez PAS les fichiers portant le nom de votre classe Context dans le fichier, surtout si leurs extensions sont .cs ou .tt. Dans le fichier Context .cs.
  5. supprimez toutes les lignes de code faisant référence à l'entité manquante. Elles ressembleront à ceci:

    public virtual DbSet< Entity1> Entity1 { get; set; }

Cette erreur est courante pour les tables supprimées de la base de données.

Lorsque l'on supprime une table dans la base de données, ou que l'on modifie simplement les web.config.connectionStrings pour la base de données mappée EF, pour pointer vers une nouvelle et non celle utilisée pour générer les mappages originaux, c'est le problème.

C'est cette nouvelle base de données dans laquelle ces entités avec l'erreur 3027 ne sont pas présentes.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X