• Entity Framework查询原理


    Entity Framework查询原理

    前言

    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的

    复制代码
    private void button1_Click(object sender, EventArgs e)
            {
                //1.0 实例化EF上下文容器类的对象
                PhoneBookEntities db = new PhoneBookEntities();
    
                //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的神秘面纱被我们揭开~~~

  • 相关阅读:
    5秒解决Https请求 未能创建 SSL/TLS 安全通道
    Entity Framework,EF 手动DB FIRST,不使用设计器
    An item with the same key has already been added
    C#.NET AES ECB 加密
    Linux通过netstat命令统计连接数
    SqlServer 查看某个表的具体数据分布
    SqlServer查看某个表的索引详细信息
    Visual Studio2019 的 Git增加忽略文件
    SQL server 获取各种 约束信息
    C# 根据日期判断星期几
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/4304534.html
Copyright © 2020-2023  润新知