none
EntityFrameworkCore 中使用 Linq的include加载关联实体附加限制条件 RRS feed

  • 问题

  • 框架:EntityFrameworkCore 

    问题背景:有两张表SysUser和SysUserToRole,他们之间是1对多的关系,生成EF实体后 SysUser类的一个属性是  public ICollection<SysUserToRole> SysUserToRole { get; set; }

    问题描述:我想查询SysUser表的时候通过Include 预加载出关联的SysUserToRole数据,但是我不希望加载出SysUser关联的所有SysUserToRole,而是希望加载出关联的SysUserToRole表中符合特定条件的SysUserToRole的数据,比如State字段=0;

    我目前是这样写的:

     var q = from c in _DBContext.SysUser.Include(u => u.SysUserToRole)
                        where c.SysUserId == 160408260000001 
                        select c ;

    写到这里就不知道该如何处理了; 各位大神这个该如何写才能实现我要的效果。

    问题2:Include预加载是不是就一定会重新生成一条语句去查询级联字段?


    2018年11月29日 3:19

全部回复

  • 你好,

    如果需要从子集合中过滤的话,可以使用any 方法:

     var q = from c in _DBContext.SysUser.Include(u => u.SysUserToRole)
                        where c.SysUserId == 160408260000001 && c.SysUserToRole.Any(s => s.Status == 0)
                        select c ;

    Best regards,

    Zhanglong


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2018年11月30日 3:13
    版主
  • 明白了,非常感谢!
    2018年12月1日 16:37