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 :

EF Core relation Many-To-Many


Sujet :

Entity Framework

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif Avatar de Othana
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2007
    Messages
    188
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2007
    Messages : 188
    Par défaut EF Core relation Many-To-Many
    Bonjour les gens.
    Si il y a des connaisseurs en asp.net core mvc avec Entity Framework, je bloque sur la manipulation d'un modèle de données many-to-many. Je ne sais pas comment pourvoir interroger la table de liaison, afin d'obtenir l'une ou l'autre des parties. Dans mon cas, j'ai des users et des groupes et la liaison groupmembers. Il me faudrait pouvoir obtenir la liste des groupe auxquels appartient le user x, ou obtenir la liste de users appartenant au groupe y :

    Code C# : 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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
        [Produces("application/json")]
        [Route("api/GroupMembers")]
        public class GroupMembersController : Controller
        {
            private readonly CoeoContext _context;
     
            public GroupMembersController(CoeoContext context)
            {
                _context = context;
            }
     
            // GET: api/GroupMembers
            [HttpGet]
            public IEnumerable<GroupMember> GetGroupMember()
            {
                return _context.GroupMember;
            }
     
            // GET: api/GroupMembers/5
            [HttpGet("{userid}")]
            public async Task<IActionResult> GetGroupMember([FromRoute] long userid)
            {
                if (!ModelState.IsValid)
                {
                    return BadRequest(ModelState);
                }
     
                var groupMember = await _context.GroupMember.SingleOrDefaultAsync(m => m.UserId == userid);
     
                if (groupMember == null)
                {
                    return NotFound();
                }
     
                return Ok(groupMember);
            }
     
    =========
     
        public class Group
        {
            public long GroupId { get; set; }
            public string GroupName { get; set; }
            public User Admin { get; set; }
            public bool IsPublic { get; set; }
            public string Comment { get; set; }
            public List<GroupMember> Membres { get; set; }
     
            //[NotMapped]
        }
     
    ==========
     
        public class User
        {
            public long UserId { get; set; }
            public string Email { get; set; }
            public bool Gender { get; set; }
            public DateTime CreationDate { get; set; }
            public DateTime LastConnectionDate { get; set; }
            public DateTime LastPosUpdateDate { get; set; }
            public bool LoggedOut { get; set; }
            public string Firstname { get; set; }
            public string LastName { get; set; }
            public DateTime? Birthdate { get; set; }
            public string Phone { get; set; }
            public string Password { get; set; }
            public string PushToken { get; set; }
            public DateTime LastEditDate { get; set; }
            public bool IsDeleted { get; set; }
            public bool IsNotificationAccepted { get; set; }
            public string Avatar { get; set; }
            public List<Sport> Sports { get; set; }
            public List<GroupMember> Groups { get; set; }
            public List<EventMember> Events { get; set; }
            [NotMapped]
            public string CurrentPassword { get; set; }
        }
     
    ==========
     
        public class GroupMember
        {
            public long UserId { get; set; }
            public User User { get; set; }
            public long GroupId { get; set; }
            public Group Group { get; set; }
        }
    Sur le chat j'ai eu comme réponses (d'une seule et même personne) : ".Where()" et "2 fonctions".
    Si vous pouvez être plus verbeux et précis, ici, ça m'aiderait énormément

  2. #2
    Membre très actif Avatar de Othana
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2007
    Messages
    188
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2007
    Messages : 188
    Par défaut
    Est-ce que ceci est valable ?
    Code C# : 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
    24
    25
    26
    27
    28
    29
    30
            // GET: api/GroupMembers/5
            [HttpGet("{userid}")]
            public async Task<IActionResult> GetGroupMember([FromRoute] long userid)
            {
                if (!ModelState.IsValid)
                {
                    return BadRequest(ModelState);
                }
                var groupMember = await _context.GroupMember.SingleOrDefaultAsync(m => m.UserId == userid);
                if (groupMember == null)
                {
                    return NotFound();
                }
                return Ok(groupMember);
            }
            // GET: api/GroupMembers/5 --surcharge pour l'interrogation à partir du groupe
            [HttpGet]
            public async Task<IActionResult> GetGroupMember([FromRoute] long userid, long groupid)
            {
                if (!ModelState.IsValid)
                {
                    return BadRequest(ModelState);
                }
                var groupMember = await _context.GroupMember.SingleOrDefaultAsync(m => m.GroupId == groupid);
                if (groupMember == null)
                {
                    return NotFound();
                }
                return Ok(groupMember);
            }
    (sauf le singleordefaut, bien sur)

Discussions similaires

  1. convertir relation many-to-many en many-to-one
    Par djoteck dans le forum Symfony
    Réponses: 3
    Dernier message: 04/10/2017, 10h06
  2. [AC-2007] Problème Relation many-to-many-to-many
    Par Synystrose dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 12/08/2015, 10h57
  3. PGSQL-EclipseLink Relation One To Many et Many To One
    Par faitor1 dans le forum Persistance des données
    Réponses: 0
    Dernier message: 30/01/2015, 19h46
  4. Un peu de mal a comprendre le concepte "one-to-many" et "many-to-many"
    Par chriscoolletoubibe dans le forum Hibernate
    Réponses: 4
    Dernier message: 29/03/2007, 18h50
  5. [EJB2.1 Entity] [CMR] Relation One to Many
    Par hamed dans le forum Java EE
    Réponses: 2
    Dernier message: 31/12/2003, 14h26

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