EF之外键Include() left join

Posted Hanf

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了EF之外键Include() left join相关的知识,希望对你有一定的参考价值。

项目中用EF实现外键查询出的数据, 查询数量正确, 但实现返回数据集数量不对

//DbContext.cs
HasRequired(s => s.ClassRoom)
            .WithMany()
            .HasForeignKey(student => student.ClassRoomId);
//查询语句
dbRead.Set<Student>().Include(x=>x.ClassRoom);

查询 .Count()和.ToList()结果数量不一致

经调试后发现生成的Sql语句为 inner join

正确的结果应该是 left join

此时应该如下定义外键

HasOptional(s => s.ClassRoom)
             .WithMany()
             .HasForeignKey(student => student.ClassRoomId);

此时返回的结果就正确了!

以上是关于EF之外键Include() left join的主要内容,如果未能解决你的问题,请参考以下文章

EF INNER JOIN,LEFT JOIN,GROUP JOIN

EF的表连接方法Include() - nlh774

如何在EF中实现left join查询

EF Linq中的左连接Left Join查询

如何将带有 LEFT JOIN 的 SQL 转换为 EF CORE 3 LINQ

EF Linq to Sql 多表left join查询并对结果group by分组之后进行count,max等处理