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 :

Associations et clés étrangères [Débutant]


Sujet :

Entity Framework

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2013
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2013
    Messages : 57
    Points : 57
    Points
    57
    Par défaut Associations et clés étrangères
    Bonjour,

    Donc voila, dans ma BDD j'ai une tables qui fait le lien entre deux autres, une association.

    ex :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Table A
    IDA
    NOMA
     
    Table B
    IDB
    NOMB
     
    Table C
    IDA,IDB
    Le truck c'est que dans mon model entity la Table C n'existe plus.

    Et dans mon code si par exemple je veux les données de la Table A qui sont dans la Table C avec la Table B, je ne peut pas regarder dans la Table C.

    Mais je peut faire une appel comme ca :
    A quoi cela correspond ? et comment je peut le comparer pour vérifier que c'est dans la Table C avec IDB.

    Désolé si je me fait mal comprendre :/

    Cordialement, Alexandre.

  2. #2
    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
    Table C dans ton modèle sert juste à dire qu'il y a une relation n*n entre table A et table B.

    Donc ton entité Table A aura une collection de Table B et vice et versa !

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2013
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2013
    Messages : 57
    Points : 57
    Points
    57
    Par défaut
    Citation Envoyé par katkiller Voir le message
    Table C dans ton modèle sert juste à dire qu'il y a une relation n*n entre table A et table B.

    Donc ton entité Table A aura une collection de Table B et vice et versa !
    D'abord merci

    Elle posséde donc une collection, mais on ne peut pas prendre un élément de cette collection ?

    Par exemple,?

    Et j'ai des éléments dans ma table A et des éléments dans ma table B. Comment via le code les relier ?

  4. #4
    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
    Il serai plus simple de t'expliquer si tu montrais un peu de code.

    Alors en voici un petit peu :

    Mon modele :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
        public class Eleve
        {
            public int EleveId { get; set; }
            public string Nom { get; set; }
            public virtual ICollection<Cours> Cours { get; set; }
     
            public Eleve()
            {
                Cours = new List<Cours>();
            }
        }
        public class Cours
        {
            public int CourId { get; set; }
            public string Nom { get; set; }
            public virtual ICollection<Eleve> Eleves { get; set; }
     
            public Cours()
            {
                Eleves = new List<Eleve>();
            }
        }
    Mon test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
                var eleve = new Eleve()
                {
                    EleveId = 4,
                    Nom = "Bidule",
                };
     
                var cours1 = new Cours()
                {
                    CourId = 22,
                    Nom = "Entity Framework"
                };
     
                var cours2 = new Cours
                {
                    CourId = 44,
                    Nom = "C#"
                };
     
                eleve.Cours.Add(cours1);
                eleve.Cours.Add(cours2);
     
                var premierCoursId = eleve.Cours.Select(c => c.CourId).FirstOrDefault();
                Console.WriteLine(premierCoursId);
    Donc ici nous avons une relation n*n : "Eleve" a n "Cours" et "Cours" a n "Eleve"
    En Bdd la représentation de cette association sera :

    Table : Eleve
    Colonnes : EleveId, Nom

    Table : Cours
    Colonnes : CoursId, Nom

    Table : ElevesCours
    Colonnes : EleveId, CoursId

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2013
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2013
    Messages : 57
    Points : 57
    Points
    57
    Par défaut
    Je vais tester ca dans la soirée, merci bien.

  6. #6
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2013
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2013
    Messages : 57
    Points : 57
    Points
    57
    Par défaut
    J'ai compris le principe, merci.

    Mais dans la pratique ça pèche un peu ..
    je vais montrer un peu de code pour plus de lisibilité.

    Donc ici, il s'agit d'une table entreprise et d'une table dirigeant. Une entreprise peut avoir plusieurs dirigeant et un dirigeant plusieurs entreprise.
    Je doit afficher la liste des dirigeants d'une entreprise sélectionner.

    Voici mes étapes :

    - Je fait une boucle pour récupéré les informations sur l'entreprise sélectionner.
    - Je parcoure chacun des dirigeants, puis je parcoure chacune de leurs entreprises (c.ENTREPRISE), et si cette entreprise est égale a l'entreprise sélectionner je l'ajoute.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    entreprise monEnt = new entreprise();
     
    foreach (entreprise uneE in _cad.entreprise)
    {
    if (uneE.numEnt == idEnt)
    {
    monEnt = uneE;
    }
    }
     
    foreach(dirigeant d in _cad.dirigeant)
    {
    foreach (entreprise e in d.entreprise)
    {
    if(e.entreprise == monEnt)
    {
    _listeDir.add(d);
    }
    }
    }
    Désolé pour le manque de lisibilité.

    L'erreur provient de la ligne 13, mais que faut-il changer ? :/

  7. #7
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2013
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2013
    Messages : 57
    Points : 57
    Points
    57
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if(e == monEnt)
    {
    _listeDir.add(d);
    }
    Erreur en recopiant.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 14/04/2011, 13h23
  2. Réponses: 4
    Dernier message: 06/08/2010, 10h38
  3. Réponses: 6
    Dernier message: 16/09/2009, 10h19
  4. clé primaire composée de 2 clés étrangères
    Par Tigresse dans le forum Installation
    Réponses: 5
    Dernier message: 28/07/2003, 14h38
  5. [Script]prob de clés étrangères
    Par Seb7 dans le forum Langage SQL
    Réponses: 13
    Dernier message: 08/07/2003, 17h37

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