Ben*_*Ben 2 c# sql entity-framework
我需要一些关于sql查询的帮助,我正在使用EntityFramework作为ORM.
我有一个User-- Group Many to Many关系,即一个用户可以属于多个组,一个组可以有多个用户.
我完成映射的方式是..
USER tbl,Usr_Grp表和组表,其中PK =主键,FK =外键
USER表中有- >用户ID(PK),用户名
组表中有- >的GroupId(PK),组名
Usr_Grp表中有- > ID(PK),UUserId(FK到用户表),GGroupId(FK到grouptable将)
我面临的问题是......在我的api中,我将得到一组GroupId,我想只找到属于所有这些GroupId的用户(即所有传入的组).
有没有办法在实体框架或Sql中编写此查询.我真的很感激我能得到的任何帮助.
-RN
连接表Usr_Grp不应该有Id.如果您在(UUserId,GGroupId)上创建复杂的主键,那么EF会自动理解它是多对多关系.
如果您建立如下关系:
然后EF将生成具有多对多关系的实体:
完成所有设置后,您可以轻松使用此类代码:
var ids = new List<int>{1, 2, 3, 4}; // GroupIds you need
context.Groups
.Where(x=> ids.Contains(x.Id))
.SelectMany(x=>x.Users)
.Distinct()
.ToArray();
Run Code Online (Sandbox Code Playgroud)
如果你不能改变模型,那么只需使用这样的linq查询:
context.Grp_Usrs
.Where(x=> ids.Contains(x.GroupId))
.SelectMany(x=>x.Users)
.Distinct()
.ToArray();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
788 次 |
| 最近记录: |