Entity Framework 多表查询方式 Entity Framework 是一个强大的数据访问技术,提供了多种查询方式来满足不同的业务需求。在本节中,我们将详细介绍 Entity Framework 中的多表查询方式,包括简单查询、查询部分字段、查询单一记录、LEFT JOIN 连接查询和 INNER JOIN 连接查询等。 简单查询 在 Entity Framework 中,可以使用 Func 形式或 Linq 形式来实现简单查询。例如,下面是一个简单的查询示例: SQL:SELECT * FROM [Clients] WHERE Type=1 AND Deleted=0 ORDER BY ID EF: ``` //Func 形式 var clients = ctx.Clients.Where(c => c.Type == 1 && c.Deleted == 0) .OrderBy(c => c.ID) .ToList(); //Linq 形式 var clients = from c in ctx.Clients where c.Type == 1 && c.Deleted == 0 orderby c.ID select c; ``` 查询部分字段 在实践中,我们常常需要查询部分字段,而不是整个表的所有字段。在 Entity Framework 中,可以使用 Select 方法来实现部分字段查询。 SQL:SELECT ID,Name FROM [Clients] WHERE Status=1 EF: ``` //Func 形式 var clients = ctx.Clients.Where(c => c.Status == 1) .Select(c => new { c.ID, Name = c.ComputerName }) .ToList(); //Linq 形式 var clients = from c in ctx.Clients where c.Status == 1 select new { c.ID, Name = c.ComputerName }; ``` 查询单一记录 有时,我们需要查询单一记录,而不是整个集合。在 Entity Framework 中,可以使用 FirstOrDefault 方法来实现单一记录查询。 SQL:SELECT * FROM [Clients] WHERE ID=100 EF: ``` //Func 形式 var client = ctx.Clients.FirstOrDefault(c => c.ID == 100); //Linq 形式 var client = (from c in ctx.Clients where c.ID == 100 select c).FirstOrDefault(); ``` LEFT JOIN 连接查询 LEFT JOIN 连接查询是一种常用的查询方式,在 Entity Framework 中可以使用 Join 方法来实现。 SQL:SELECT c.ID,c.ComputerName,g.Name GroupName FROM [Clients] c LEFT JOIN [Groups] g ON c.GroupID = g.ID WHERE c.Status=1 EF: ``` //Func 形式 var clients = ctx.Clients.Where(c => c.Status == 1) .Select(c => new { c.ID, c.ComputerName, GroupName = ctx.Groups.FirstOrDefault(g => g.ID == c.GroupID).Name }) .ToList(); //Linq 形式 var clients = from c in ctx.Clients where c.Status == 1 select new { c.ID, c.ComputerName, GroupName = (from g in ctx.Groups where g.ID == c.GroupID select g.Name).FirstOrDefault() }; ``` INNER JOIN 连接查询 INNER JOIN 连接查询是另一种常用的查询方式,在 Entity Framework 中可以使用 Join 方法来实现。 SQL:SELECT c.ID,c.ComputerName,g.Name GroupName FROM [Clients] c INNER JOIN [Groups] g ON c.GroupID = g.ID WHERE c.Status=1 ORDER BY g.Name EF: ``` //Func 形式 var clients = ctx.Clients.Where(c => c.Status == 1) .Join(ctx.Groups, c => c.GroupID, g => g.ID, (c, g) => new { c.ID, c.ComputerName, GroupName = g.Name }) .OrderBy(r => r.GroupName) .ToList(); //Linq 形式 var clients = from c in ctx.Clients where c.Status == 1 join g in ctx.Groups on c.GroupID equals g.ID orderby g.Name select new { c.ID, c.ComputerName, GroupName = g.Name }; ``` Entity Framework 提供了多种查询方式,包括简单查询、查询部分字段、查询单一记录、LEFT JOIN 连接查询和 INNER JOIN 连接查询等。通过掌握这些查询方式,可以满足不同业务需求,提高开发效率和数据访问性能。


































- pb199011122014-01-09太强大了~学习了 最近正在学EF
- NETKINGDONG2018-03-28非常好的学习资料!赞一个!!!!!!!
- liyw2015-04-28真心不错,这篇介绍了很多资料中没有的知识
- jinliang20102014-02-25项目准备用ef,先学习下

- 粉丝: 0
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 医院计算机网络信息系统安全问题策略.docx
- 人力资源——网络招聘.doc
- 电信网码号和互联网域名-IP地址资源“十二五”规划.doc
- bigant数据库说明.doc
- 互联网背景下的家园共育模式探究.docx
- 计算机辅助测评的智能分值设定研究.docx
- 基于Cuckoo-Filter布谷鸟过滤器实现的高效动态流量分析与用户安全防护系统-布谷鸟过滤器算法动态流量统计恶意请求识别频率限制与访问控制-用于Web服务器和API接口的实时C.zip
- AVR单片机通用USB接口模块设计方案资料.doc
- 电力信息通信市县一体化运维体系探讨.docx
- 用于目标检测后,进行单个物体的角度测量
- 浅析职业学校计算机教学的新思路.docx
- GIS设备现场安装与检测.ppt
- 医院网络视频监控系统应用分析-公共场所其他.docx
- 营销系统与资产系统接口讨论资产管理管理系统流程细化关键业务解决方案物流专业组.ppt
- 基于单片机的电子琴课程方案设计书1.doc
- 物联网技术与应用单选汇总.doc


