Cela est dû à la façon dont EF4 fonctionne avec le model-first.
Lorsque vous créez un modèle model-first pour la première fois, il se trouve dans un état où le SSDL n'existe pas. Vous pouvez faire glisser des entités, les associer, etc. et pourtant, si vous regardez le SSDL sur le fichier EDMX, vous verrez que aucune des entités n'a une table de stockage associée dans le SSDL.
Cela change lorsque vous cliquez sur l'élément de menu contextuel Générer la base de données à partir du modèle
. La partie confuse est que cette action fait plus que simplement générer un script DDL. En fait, elle modifie le fichier EDMX pour inclure des informations SSDL. À partir de ce moment, le fichier EDMX entrera dans un état dans lequel chaque entité dans le concepteur/CSDL doit être associée à une entité dans le SSDL. Si elle ne correspond pas, cela déclenchera une erreur de compilation :
Aucune correspondance spécifiée pour les EntitySet/AssociationSet suivants - (NomEntity)
Un autre fait intéressant est que ce n'est pas le genre d'erreur qui empêchera la compilation. En effet, elle générera la bibliothèque de classes de sortie. Ne devrait-elle pas être un avertissement ou quelque chose du genre ?
Pour éviter cette erreur, il vous suffit de Générer la base de données à partir du modèle
à nouveau après avoir inséré une nouvelle entité. Cela mettra à jour le SSDL et corrigera les correspondances.
MODIFIER
Si vous n'utilisez pas le model-first et que vous "mettez à jour à partir de la base de données", vous aurez également cette erreur si vous avez supprimé une table dans le serveur de base de données. Cela est dû au fait qu'Entity Framework ne supprimera pas automatiquement l'entité pour vous. Supprimez l'entité manuellement et l'erreur disparaîtra.
1 votes
Ainsi, pouvez-vous générer un script de base de données à partir de votre modèle ?
1 votes
Si vous utilisez "Update Model From Database", peut-être que ce post vous aidera