Cela est dû à la façon dont EF4 fonctionne avec le modèle d'abord.
Lorsque vous créez pour la première fois un modèle basé sur le modèle, il est dans un état où le SSDL n'existe pas. Vous pouvez faire glisser des entités, les associer et ainsi de suite et pourtant, si vous regardez le SSDL sur le fichier EDMX, vous verrez qu'aucune des entités n'a de table de stockage associée dans le SSDL.
Cela change lorsque vous cliquez sur l' Generate Database From Model
élément de menu contextuel. La partie déroutante est que cette action fait plus que simplement générer un script DDL. En fait, il modifie le fichier EDMX pour inclure des informations SSDL. À partir de ce moment, le fichier EDMX entrera dans un état dans lequel chaque entité du concepteur / CSDL doit être mappée à une entité du SSDL. Si l'on ne mappe pas, cela déclenchera une erreur de compilation:
Aucun mappage spécifié pour le EntitySet / AssociationSet suivant - (EntityName)
Un autre fait intéressant est que ce n'est pas le genre d'erreur qui empêchera la compilation. Il générera en effet la bibliothèque de classes de sortie. Cela ne devrait-il pas être un avertissement ou quelque chose?
Pour éviter cette erreur, tout ce que vous avez à faire après l'insertion d'une nouvelle entité est de Generate Database From Model
recommencer. Cela mettra à jour le SSDL et corrigera les mappages.
ÉDITER
Si vous n'utilisez pas le modèle d'abord et que vous «mettez à jour à partir de la base de données», vous aurez également cette erreur dans le cas où vous avez supprimé une table dans DB Server. En effet, Entity Framework ne supprimera pas automatiquement l'entité pour vous. Supprimez l'entité manuellement et l'erreur disparaîtra.