[原创]EntityFramework查询原理

王朝学院·作者佚名  2016-08-27  
宽屏版  字体: |||超大  

前言Entity Framework的全称是ADO.NET Entity Framework,是微软开发的基于ADO.NET的ORM(Object/Relational Mapping)框架。

Entity Framework的主要特点:

1. 支持多种数据库(Microsoft SQL Server,Oracle, and DB2);

2. 强劲的映射引擎,能很好地支持存储过程;

3. 提供Visual Studio集成工具,进行可视化操作;

4. 能够与asp.net, WPF, WCF, WCF Data Services进行很好的集成。

思考?有EF我们就不用自己写SQL语句了,EF到底做了哪些事情了,我们来探索一下? 我们知道edmx文件是EF的元数据那么我们用xml方式打开EDMX文件可以看到如下所示数据:

图中的SSDL就表示数据库的配置节点,CSDL实体配置节点,C-S实体和数据库的关系映射。

我们发现SSDL配置节点中的GroupInfo节点XML数据和我们数据中的数据完成符合。如下图

SSDL就表示数据库的配置节点中的GroupInfo

CSDL实体配置节点中的GroupInfo

C-S实体和数据库的关系映射中的GroupInfo

了解了这些,那么我们看看EF到底是怎么生成SQL的PRivatevoidbutton1_Click(objectsender, EventArgs e)

{//1.0 实例化EF上下文容器类的对象PhoneBookEntities db =newPhoneBookEntities();//2.0 查询GropuINfo中的ID<209所有数据db.GroupInfo.Where(c => c.GroupId <209).ToList().ForEach(c =>Console.WriteLine(c.GroupName));

}

从上图中的代码和分析图我们可以看出:

1.EF紧紧是做了一层包装,最终还是要在底层调用Ado.NET

2.EF只是负责生成SQL语句,发送给Ado.NET,Ado.NET负责从DB中读取数据,最终返回给我们的EF

3.EF中edmx元数据获取DB表的结构的描述

4.我们要生成的查询SQL语句 select GroupId,GroupName,GroupType from GroupInfo这些可以从元数据中获取where之后的条件可以由我们的c => c.GroupId < 209提供

由此EF的神秘面纱被我们揭开~~~

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有