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:
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 ;)