首页 新闻 会员 周边 捐助

EF多对多查询列表分页

0
悬赏园豆:100 [已解决问题] 解决于 2019-10-21 10:35

MarkDown 写了支持不行

EF 多对多查询

例如,有 用户--(用户角色)--角色 三张表

用户表

<table>
<tr>
<th>ID</th>
<th>User</th>
</tr>
<tr>
<td>1</td>
<td>张三</td>
</tr>
<tr>
<td>2</td>
<td>李四</td>
</tr>
<tr>
<td>3</td>
<td>王五</td>
</tr>
</table>

角色表

<table>
<tr>
<th>ID</th>
<th>Role</th>
</tr>
<tr>
<td>4</td>
<td>学习委员</td>
</tr>
<tr>
<td>5</td>
<td>小组长</td>
</tr>
<tr>
<td>6</td>
<td>学生</td>
</tr>
</table>

关系表

<table>
<tr>
<th>UserId</th>
<th>RoleId</th>
</tr>
<tr>
<td>1</td>
<td>1</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
</tr>
<tr>
<td>1</td>
<td>3</td>
</tr>

<tr>
<td>2</td>
<td>1</td>
</tr>
<tr>
<td>2</td>
<td>2</td>
</tr>
<tr>
<td>3</td>
<td>2</td>
</tr>
</table>

想分页得到 用户表,大概内容如下

<table>
<tr>
<th>Id</th>
<th>UserName</th>
<th>Rols</th>
</tr>
<tr>
<td>1</td>
<td>张三</td>
<td>学习委员,小组长,学生</td>
</tr>
<tr>
<td>2</td>
<td>李四</td>
<td>学习委员,小组长</td>
</tr>
</table>

另外还有另一个需求,再分页的同事,可以经过Roles过滤,如包括学生的结果

<table>
<tr>
<th>Id</th>
<th>UserName</th>
<th>Rols</th>
</tr>
<tr>
<td>1</td>
<td>张三</td>
<td>学习委员,小组长,学生</td>
</tr>
</tr>
</table>

如何降低查询数量,不加载到内存中完成这操纵呢

卍兲卐的主页 卍兲卐 | 初学一级 | 园豆:59
提问于:2019-03-22 23:56
< >
分享
最佳答案
0

哪有任何场景都完全是在DB中进行的呢,比如一对多,当然可以用STUFF,有些查询是必须需要在查询完后在内存中进行,你仅仅需要思考的是如何降低连接次数,以及查询性能。

收获园豆:60
Jeffcky | 老鸟四级 |园豆:2789 | 2019-03-23 12:13
其他回答(1)
0

多对多就include再theninclude

收获园豆:40
吴瑞祥 | 园豆:29449 (高人七级) | 2019-03-23 14:16
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册