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

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur Full-stack
    Inscrit en
    Novembre 2010
    Messages
    372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Full-stack

    Informations forums :
    Inscription : Novembre 2010
    Messages : 372
    Points : 489
    Points
    489
    Par défaut Sélectionner les critères de 2 Entités dans une Jointure de type n à n (relation n- n) sans clé primaire
    Bonsoir à tous,
    Je voudrais sélectionner quelques critères dans 2 entités liées par une relation de type n-n et sans entité intermédiaire. Les Entités en questions sont:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Abscence(string IdentifiantAbscence, string TypeAbscence, string MotifsAbscence, DateTime DebutAbscence, int DureeAbscence,
     bool AbscenceJustifiee...)
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Agent(string AgentMatricule, string Photo, string Nom, string Prenom, string EmailAgent...)
    .

    Nom : 16-07-2014 16-48-47.png
Affichages : 107
Taille : 24,9 Ko
    Je voudrais à partir de l'Identifiant de l'abscence "IdentifiantAbscence" sélectionner les attributs suivant issues des 2 entités [
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    IdentifiantAbscence,AgentMatricule,Photo,TypeAbscence,
    MotifsAbscence,DebutAbscence,DureeAbscence,AbscenceJustifiee]
    . Je ne suis parvenu qu'à sélectionner les critères de l'entité Abscence il me faut absolument étendre la sélection à l'entité Agent.

    Votre aide me sera précieuse.

    Cordialement.
    La recherche de la connaissance est une Lumière qui apaise le Cœur.
    Si une réponse vous a été utile , n'oubliez pas de voter en cliquant sur:.

  2. #2
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 434
    Points : 654
    Points
    654
    Par défaut
    Quel identifiant à tu pour lier les colonnes entres elles?

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur Full-stack
    Inscrit en
    Novembre 2010
    Messages
    372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Full-stack

    Informations forums :
    Inscription : Novembre 2010
    Messages : 372
    Points : 489
    Points
    489
    Par défaut
    Les identifiant des entités sont:
    -Abscence --> String IdentifiantAbscence
    .
    - Agent --> String AgentMatricule.

    Cordialement.
    La recherche de la connaissance est une Lumière qui apaise le Cœur.
    Si une réponse vous a été utile , n'oubliez pas de voter en cliquant sur:.

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur Full-stack
    Inscrit en
    Novembre 2010
    Messages
    372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Full-stack

    Informations forums :
    Inscription : Novembre 2010
    Messages : 372
    Points : 489
    Points
    489
    Par défaut
    Bon je suis parvenu à faire la sélection dans une variable que voici:
    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
    public static List<Abscence> GetAbscenceListe(string aIdentifiant)
            {
                 var L = (ContexteDAO.ContexteDonnees.Abscences.Where(A => A.IdentifiantAbscence == aIdentifiant).SelectMany(A => A.Agents,(AB,Ag) => new 
                     {
                         AB.IdentifiantAbscence,
                         AB.TypeAbscence,
                         Ag.AgentMatricule,
                         Ag.Photo,
                         AB.MotifsAbscence,
                         AB.DebutAbscence,
                         AB.DureeAbscence,
                         AB.AbscenceJustifiee
                     }));
     
                 foreach (var abscence  in L)
                 {
                     return L.ToList();   
                 }
     
     
            }
    , mais là, il se pose un problème de conversion est signalé. j'ai ce message d'erreur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Erreur	1	Impossible de convertir implicitement le type 'System.Collections.Generic.List<AnonymousType#1>' en 'System.Collections.Generic.List<EnrePaxDAO.Abscence>'	....	EnrePaxDAO
    La recherche de la connaissance est une Lumière qui apaise le Cœur.
    Si une réponse vous a été utile , n'oubliez pas de voter en cliquant sur:.

  5. #5
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 434
    Points : 654
    Points
    654
    Par défaut
    c'est normal tu fais un new sur un type anonyme

    alors que ton code attend normalement un type absence

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    new absences() {....}

  6. #6
    Membre confirmé
    Homme Profil pro
    Développeur Full-stack
    Inscrit en
    Novembre 2010
    Messages
    372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Full-stack

    Informations forums :
    Inscription : Novembre 2010
    Messages : 372
    Points : 489
    Points
    489
    Par défaut
    Bonsoir,

    Avec , comme vous le dite, j'ai ceci:

    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
    public static List<Abscence> GetAbscenceListe(string aIdentifiant)
            {
                 var L = (ContexteDAO.ContexteDonnees.Abscences.Where(A => A.IdentifiantAbscence == aIdentifiant).SelectMany(A => A.Agents,(AB,Ag) => new Abscence ()
                     {
                         AB.IdentifiantAbscence,
                         AB.TypeAbscence,
                         Ag.AgentMatricule,
                         Ag.Photo,
                         AB.MotifsAbscence,
                         AB.DebutAbscence,
                         AB.DureeAbscence,
                         AB.AbscenceJustifiee
                     }));
     
                 foreach (var abscence  in L)
                 {
                  return L.ToList();   
                 }
     
            }
    Ce qui provoque une erreur dont le message est les suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Erreur	1	Impossible d'initialiser un type 'EnrePaxDAO.Abscence' avec un initialiseur de collection, car il n'implémente pas 'System.Collections.IEnumerable'	...	EnrePaxDAO
    La recherche de la connaissance est une Lumière qui apaise le Cœur.
    Si une réponse vous a été utile , n'oubliez pas de voter en cliquant sur:.

  7. #7
    Membre confirmé
    Homme Profil pro
    Développeur Full-stack
    Inscrit en
    Novembre 2010
    Messages
    372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Full-stack

    Informations forums :
    Inscription : Novembre 2010
    Messages : 372
    Points : 489
    Points
    489
    Par défaut
    Bonjour,

    J'ai fini par me résoudre à créer une Vue qui peut faire l'affaire dans ma base SQL (où les jointures sont faciles), et l'importer dans mon modèle EDM.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT A.IdentifiantAbscence,Ag.AgentMatricule,Ag.Photo,TypeAbscence,MotifsAbscence,DebutAbscence,DureeAbscence, AbscenceJustifiee  FROM Abscences A
    join AgentsAbscences AB ON A.IdentifiantAbscence = AB.IdentifiantAbscence 
    join Agents Ag ON Ag.AgentMatricule = AB.Agents_Matricule
    Ma question est de savoir, puis je soumettre ce sujet en actualité??

    Cordialement..
    La recherche de la connaissance est une Lumière qui apaise le Cœur.
    Si une réponse vous a été utile , n'oubliez pas de voter en cliquant sur:.

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Août 2006
    Messages : 88
    Points : 62
    Points
    62
    Par défaut
    Bonjour,

    Je me permet de te répondre à posteriori.
    Tu y étais presque !

    La problématique étant ton type de retour. Quand tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    new Abscence ()
                     {
                         AB.IdentifiantAbscence,
                         AB.TypeAbscence,
                         Ag.AgentMatricule,
                         Ag.Photo,
                         AB.MotifsAbscence,
                         AB.DebutAbscence,
                         AB.DureeAbscence,
                         AB.AbscenceJustifiee
                     }
    Tu utilises un type anonyme (en gros tu déclares et instancie une nouvelle classe qui n'a pas de définition écrite auparavant) comprenant les proprerties IdentifiantAbsence, TypeAbsence, etc...
    Or dans ta fonction tu indiques comme type de retour que tu veux une liste d'absence.

    D'ailleurs le message d'erreur te dit bien qu'il ne peut convertir une liste d'objets de type générique en une liste d'absence.
    Il te dit même qu'il ne peut pas le faire implicitement car, si jamais ton objet anonyme avait eu la même structure que ta class absnece il aurait tenté une convertion (d'ou le terme implicite).

    POur aller jusqu'au bout, 3 solutions s'offrent à toi :
    1) Retourner un type existant (ne retourner que AB par exemple ou AG)
    2) Déclarer dans ton code une classe AbsencePlusAgent qui reprend la structure de ton type anonyme et faire en sorte que ta fonction retourne ce type d'objet
    3) Utiliser le type anonyme (en gros ne pas typer le retour de ta fonction), tu pourras utiliser les proprirétés de ton objet, tu perdras l'autocomplétion et tu auras un typage faible mais dans certains contexte ça peut se défendre.

    @ ++

  9. #9
    Membre confirmé
    Homme Profil pro
    Développeur Full-stack
    Inscrit en
    Novembre 2010
    Messages
    372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Full-stack

    Informations forums :
    Inscription : Novembre 2010
    Messages : 372
    Points : 489
    Points
    489
    Par défaut
    Bonjour,

    Merci pour la réponse. Je m'y suis frotté...et me suis arrêté à ce niveau:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    var L = (ContexteDAO.ContexteDonnees.Abscences.Where(A => A.IdentifiantAbscence == aIdentifiant).SelectMany(A => A.Agents,(AB,Ag) => new Abscence ()
                     {
                         AB.IdentifiantAbscence,
                         AB.TypeAbscence,
                         Ag.AgentMatricule,
                         Ag.Photo,
                         AB.MotifsAbscence,
                         AB.DebutAbscence,
                         AB.DureeAbscence,
                         AB.AbscenceJustifiee
                     }));
    Quant à créer la nouvelle classe hybride, ...j'y penser ne pouvais plus. J'avais perdu trop de temps. Si vous y arriver ce sera bien. Quelqu'un d'autre pourra s'en servir.

    Cordialement
    La recherche de la connaissance est une Lumière qui apaise le Cœur.
    Si une réponse vous a été utile , n'oubliez pas de voter en cliquant sur:.

Discussions similaires

  1. Réponses: 1
    Dernier message: 10/06/2014, 17h05
  2. Réponses: 3
    Dernier message: 22/03/2010, 21h20
  3. Réponses: 6
    Dernier message: 23/01/2007, 10h17
  4. mettre les termes d'un string dans une struct
    Par grand's dans le forum SL & STL
    Réponses: 17
    Dernier message: 29/11/2004, 17h43
  5. [VBA-E]modifier les attributs d'un commentaire dans une cellule
    Par Olivier vb dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 15/03/2004, 10h26

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