文章内容
2017/11/30 9:37:00,作 者: 黄兵
EF Join连接查询的坑
最近做项目的时候遇到一个需要级联查询的数据,表中又没有定义相关的外键约束,所以限定了咱们只能使用Join方式的关联而不是Include的方式关联,关于Include和Join的详细用法,本屌就不再此处进行详细说明了。园子里相关的文章有很多,大家请自行去查看!
废话不多说,直接上代码:
说明:1.ef的Join级联查询生成的语句是Inner Join 的方式,所以此处生成的脚本语句应该类似下面的形式:
select * from TableNameA A
Inner Join TableNameB B
where ...相关条件...
2.图一中的标红的1表示关联的表 也就是TableNameB的名字 2表示级联的数据集
3.通过检测数据库可以发现生成的脚本如下:
备注:红色圆圈内的标记 说明我们的猜测是正确的。
大家再来看看这种情况的查询:
说明:图一和图二的不同点就在红色标记2
我们再次监测数据库生成的脚本:
说明:我们发现生成的脚本并不和我们所想象的一样,而是先查询除关联表的数据再取出符合条件的。这样就比较耗时了。
总结:经过多方资料的查询发现:原来使用Join关联的时候,关联字段值的名字需要一样才会使用Inner的级联方式查询,如果不一样的话,会使用类似第二种的这种查询方式进行查询。
评论列表