web-dev-qa-db-fra.com

Comment définir correctement une association entre deux objets dans Entity Framework 4 Entitydesigner?

Pour un nouveau projet, j'essaie d'abord de créer mes classes professionnelles et de créer les vraies tables de base de données plus tard. Par conséquent, j'utilise Entity Framework 4 Designer. A a créé un nouveau fichier "ADO.Net Entity Data model", avec l'extension .edmx.

J'ai créé deux entités:
alt text

Je veux ajouter une relation 1 à nc entre Produit -> Groupe. Si j'avais créé la base de données MSSQL en premier, j'aurais ajouté une colonne IDGroup au produit Table et référencé Product.IDGroup à Group.IDGroup. Pour autant que je puisse voir, je ne peux pas ajouter une telle association dans le concepteur si j'ajoute une nouvelle propriété appelée IDGroup à l'entité de produit

Voici comment j'ajoute le mappage: alt text

Ce qui se traduit par:
alt text

Maintenant, la partie sur laquelle porte cette question: si j'ajoute deux tables d'une base de données MSSQL existante au fichier edmx, j'obtiendrai l'erreur de compilation:

Error 3027: No mapping specified for the following EntitySet/AssociationSet - GroupSet, ProductSet

Que signifie cette erreur et que dois-je faire pour y remédier? Si je supprime ces deux tables, je recevrai un avertissement à la place:

Error 2062: No mapping specified for instances of the EntitySet and AssociationSet in the EntityContainer myContainer.

Quelque chose me dit, je fais tout ça mal et ce ne sont que des trucs de base. Comment puis-je le faire correctement?

54
citronas

Je suis juste tombé dessus moi-même et quand je l'ai recherché sur Google (j'ai répondu à votre question).

J'ai pu double-cliquer sur la ligne (ligne d'association) dans le designer. Remplissez les propriétés là-bas et je l'ai fait fonctionner.

J'ai également dû fermer VS et le rouvrir pour que certaines des erreurs signalées disparaissent ...

Je ne peux pas dire que c'est la bonne réponse - simplement tâtonner et sembler obtenir des résultats.

85
Jason Jarrett

Quelque chose qui pourrait être facile à manquer est de Générer la base de données à partir du modèle. D'après ce que je comprends, cela doit être exécuté après chaque modification apportée à la base de données .edmx.

Cette simple erreur m'est arrivée et a provoqué de la frustration pendant quelques minutes =)

9
pabbie

J'ai obtenu cette erreur lorsque j'ai généré le modèle à partir de la base de données à l'aide du générateur ADO.Net DBContext sous VS2010 SP1 avec EF4.1 installé. La base de données que j'utilisais n'avait PAS d'intégrité référentielle entre les champs de clé primaire et étrangère.

La solution consistait à double-cliquer sur la ligne d'association qui fait apparaître la boîte de dialogue Contrainte de référentiel. J'ai ensuite défini le champ Principal comme étant la table avec la clé primaire, le Dépendant comme table avec la clé étrangère, défini les noms de clé étrangère pour qu'ils correspondent dans la liste déroulante et cliqué sur OK.

Le code a ensuite été compilé et j'ai pu travailler sur les entités en utilisant var foreign = DBContext.Primary.First (). Foreign etc

Steve

6
Steve Davies

J'ai eu la même erreur, et un bit de configuration que la boîte de dialogue "Ajouter une association" ne m'a pas aidé à définir était la propriété "Contrainte référentielle". Une fois que j'ai configuré que j'ai reconstruit la solution et tout était cool.

3
Jon Dewees

J'utilise la première approche de la base de données et j'ai rencontré le même problème.

ce qui était causant le problème est sur de mon collègue a supprimé une de la table de la base de données et a oublié de mettre à jour le modèle.

Ma solution est de trouver l'entité supprimée du diagramme. (le navigateur de modèles peut être utile.) Supprimez-le ensuite du diagramme, car EF ne supprime pas les entités si vous avez supprimé la table de la base de données.

Générez et vérifiez la fenêtre Liste des erreurs (Ctrl + E, W).

Terminé.

0
Dinch

J'ai également constaté que la reconstruction de votre projet après des modifications de votre contexte et de vos modèles Entity Framework peut parfois résoudre ces erreurs, surtout si les contextes Entity Framework se trouvent dans un projet différent.

0
Xipooo

Tout ce que vous avez à faire est de supprimer toutes vos tables du fichier edmx. Maintenant, faites un clic droit dans le fichier edmx et choisissez l'option de mise à jour du formulaire de base de données. Mettre à jour Ef, le problème sera résolu.

0
M Tauqeer

J'ai eu cette erreur lorsque j'ai supprimé une association du diagramme de modèle, mais l'association reste dans le XML sous-jacent dans le .edmx. La seule façon que j'ai trouvée pour résoudre ce problème est de modifier manuellement l'edmx pour supprimer les références à l'association incriminée.

0
jburka