• EF-运行原理


    一、什么是EF

          实体架构(Entity Framework)是微软以来ADO.Net为基础开发出来的对象关系映射(ORM)解决方案,它解决了对象持久化问题,将程序员从编写麻烦的SQL语句中解放出来。

        优点:

          支持多种数据库(Microsoft SQL Server、Oracle和DB2等);

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

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

          能够与ASP.NET、WPF、WCF、WCF Data Services进行很好的集成。

    二、ORM

            常见ORM框架:

         ORM不是产品,是框架的总称,面向对象的程序设计语言到关系数据库的映射。

              使程序员既可以利用面向对象语言的简单易用性,又可以利用关系数据库的技术优势来实现应用程序的增删改查操作。

        1. NHibernate:Hibernate在.NET平台下的版本

        2. iBatis.NET:iBatis在.NET平台的实现

        3.Linq to SQL(微软不再更新):.NET针对SQL server的ORM框架

        4.ADO.NET Entity Framework:微软在.NET4.0推出的领域驱动开发模型。

    注意:ADO.NET Entity Framework是微软以ADO.NET为基础所发展出来的对象关系映射解决方案,只不过是对ADO.NET进行了一个更高层次的封装。

        产生背景:

         1、重复的操作数据库代码

        我们使用三层架构时,使用的是ADO.NET访问数据库,我们将ADO.NET对数据库的操作封装在一个SQLHelper中,然后通过D层调用SQLHelper实现对数据库的操作。即使使用SQLHelper进行封装,我们的数据访问层(DAL),还是要针对不同的业务重复很多增、删、改、查操作。只是因为操作的表不同,我们就去重复这些增删改查操作,那么有没有什么工具可以自动生成这些语句?

        2、影响扩展性和灵活性

        数据访问层同时与域模型和关系数据库模型绑定,不管域模型还是关系数据库模型发生变化,都要修改数据库访问层的相关程序代码,增加了软件的维护难度。

         定义:

        ORM全称:(Object-Relation Mapping)即对象-关系映射。ORM是将关系数据库中的业务数据用对象的形式表现出来,并通过面向对象的方式将这些对象组织起来,实现系统业务逻辑的过程。

        ORM解决的主要问题是对象关系映射。一般情况,实体与我们库中的表的对应关系,一个实体就好比表中的一行数据,将实体的操作视为对表的操作,通过ORM模型对我们的代码更加简洁,我们将对数据库的操作通过ORM转换后执行,ORM模型确实为我们的开发提高了效率。

      结构:

        

      通过该图,可以看出,

          O对应程序中的类Customer,就是对象,

          R含义为Relation,对应数据当中的关系表

          M表示程序中对象和数据库中关系表的映射关系(Mapping实际上是一个XML文件)

     

        当我们通过应用程序对数据库执行CRUD时,通过EF方式,实际上是对ObjectContext的操作,ObjectContext相当于EF的入口,ObjectContext拿到对应的消息(CRUD)后,通过ORM中的Mapping来将对象O映射成数据库中的关系R。我们通过一个截图来看下Mapping中存储的内容。

    对象关系映射


       数据库中有用户表、工作表

      

    第一步:系统向数据库中插入一条信息,这时内存中有User对象

    第二步:对象和数据库怎样通信,即怎样将对象放到数据库

       需要XML配置文件进行配置,保存映射关系

    第三步:需要映射关系,使用Relation(映射到表中每个字段),最后可生成完整的SQL语句

    Object:代表系统中对应的表

    Table:代表数据库中的表,其中包含表中的各个字段

    注意:ORM框架采用元数据来描述对象一关系映射细节,元数据一般采用XML格式,并且存放在专门的对象一映射文件中。只要提供了持久化类与表的映射关系,ORM框架在运行时就能参照映射文件的信息,把对象持久化到数据库中。

    在系统中的体现:

         SSDL:数据库(数据表)

         CSDL:C#(类)

         C-S:类和表的映射关系


    ————————————————
    原文链接:https://blog.csdn.net/gxq741718618/article/details/41879617

  • 相关阅读:
    硬盘分区、格式化及文件系统的管理一
    系统监控
    系统的初始化和服务
    正文处理命令及tar命令
    Salesforce: getContentAsPDF()在lightning mode下报错
    Salesforce: 无法在trigger中取到Country或State的更新
    Salesforce: Safe Navigation Operator
    Salesforce: INVALID_QUERY_LOCATOR简析
    Salesforce: Trigger使用注意事项
    Salesforce: 设置用户默认访问Lightning Mode
  • 原文地址:https://www.cnblogs.com/sheng518/p/11434223.html
Copyright © 2020-2023  润新知