IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Entity Framework Discussion :

Problem clé Entity Framework - Code First


Sujet :

Entity Framework

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    189
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 189
    Points : 68
    Points
    68
    Par défaut Problem clé Entity Framework - Code First
    Bonjour à tous ,

    J'ai un problème de clé pour établir la relation entre deux entités J'ai trois classes : Formation / Etablissement et Competence

    Dans ma classe Formation je possède un objet Etablissement que j'ai réussi à mapper correctement , à partir d'un tutoriel que je suis , comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public class Formation
        {
            public int Id { get; set; }
            public string libelleFormation { get; set; }
     
            public Etablissement unEtablissement { get; set; }
     
            //foreign key
            public int etablissementId;
     
        }
    J'ai pas trop compris dans son tutoriel pourquoi il a indiqué la clé étrangére dans la classe établissement car on dirait que le framework prend directement l'id de l'objet unEtablissement en clé étrangére car quand je consulte le mode conception de la base , il me met unEtablissement_id.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public class Etablissement
        {
            public int id { get; set; }
            public string libelleEtablissement { get; set; }
            public string ville { get; set; }
        }
    jusqu'a la pas soucis la migration ce fait correctement et la mise à jour de la bdd également mais le problème intervient quand je souhaite récupérer la liste de compétence que j'ai acquéris durant cette formation ( 1,n ; 1,1 pour la relation que je souhaite)

    Je me suis pris comme ceci en essayant de me baser sur le tutoriel:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     public class Formation
        {
            public int Id { get; set; }
            public string libelleFormation { get; set; }
     
            public Etablissement unEtablissement { get; set; }
     
            public int etablissementId;
     
            public List<Competence> lesCompetences { get; set; }
     
        }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
      public class Competence
        {
            public int id { get; set; }
            public string libelleCompetence { get; set; }
     
            public int niveauCompetence { get; set; }
     
            public int idFormation { get; set; }
        }
    mais j'ai l'erreur quand je fais la migration : site_seb.Models.Competence: : Aucune clé n'est définie pour l'EntityType 'Competence'. Définissez la clé pour cet EntityType.
    Competences: EntityType: L'EntitySet 'Competences' est basé sur le type 'Competence' pour lequel il n'existe aucune clé définie.


    J'ai essayé de me baser par rapport à l'exemple mais je ne sais pas si c'est comme ca qui faut s'y prendre ou autrement , si quelqu'un voudrait bien me préciser ?

    Par ailleurs je souhaiterai savoir aussi si on a une relation (n,n) et qu'on doit sortir une nouvelle entité comme faut -il faire ? Si vous avez un tutoriel qui explique tout cela je suis preneur

    Merci d'avance à tous

  2. #2
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    189
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 189
    Points : 68
    Points
    68
    Par défaut
    Autant pour moi c'est les attributs en private qui bloqué la migration... Par contre concernant la clé étrangére , je veux bien une explication car j'ai essayé sans indiqué la clé étrangére et la relation se fait automatiquement donc j'ai du mal comprendre

  3. #3
    Membre éprouvé
    Homme Profil pro
    Architecte technique
    Inscrit en
    Septembre 2005
    Messages
    462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 462
    Points : 1 056
    Points
    1 056
    Par défaut
    Salut,

    EntityFramework possède une liste de règles (que l'on appelle "convention") qui sont configurées par défaut ==> lien

    Voici quelques liens pour les conventions sur les clés primaires et clés étrangères :
    Conventions Code First
    Entity Framework Code First Conventions

    Exemple de convention :
    EF peut déduire qu'une propriété qui a le nom d'une "Entité" + "Id" veut dire que c'est une clé étrangère ou une clé primaire...

    Pour les relations n-n. Si tu déclare une collection dans chaque entités de la relation alors EF comprendra que c'est une relation n-n.
    Si jamais tu déclare la collection que dans une des deux entités il faudra configurer ta relation dans ton context ==> lien

    N'hésite pas si tu as besoin de précision le sujet n'est pas si simple.

  4. #4
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    189
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 189
    Points : 68
    Points
    68
    Par défaut
    D'accord , merci Katkiller je comprends un peu mieux et je vais lire les pages que tu m'as passé . En essayant un peu plus , j'ai déjà compris un peu plus comment le framework réagissait . Par exemple pour la clé primaire j'appelais ma clé primaire idFormation et je comprenais pas pourquoi il acceptait pas la migration et quand j'ai mis formationId cela à fonctionner.

    Je laisse ouvert le sujet comme ca si j'ai d'autres questions qui me viennent ou si d'autres personnes ont des questions à propos de ce sujet , ils pourront le faire.

Discussions similaires

  1. [Débutant] Application MVC 4 - Entity Framework (Code First) - Base Oracle
    Par clem166 dans le forum Entity Framework
    Réponses: 2
    Dernier message: 25/06/2014, 21h32
  2. Export de BDD avec Entity Framework Code First
    Par thor76160 dans le forum Entity Framework
    Réponses: 2
    Dernier message: 02/07/2013, 16h05
  3. Entity Framework - Code First : Reverse Engineering
    Par Invité dans le forum Contribuez
    Réponses: 0
    Dernier message: 13/12/2012, 14h16
  4. [Débutant] Entity Framework code first
    Par jorrie dans le forum Silverlight
    Réponses: 2
    Dernier message: 07/11/2012, 15h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo