• Entity Framework-01


    一、Entity Framework简介
    ADO.NET Entity Framework是微软以ADO.NET为基础融入了对象关系映射(Object Relational Mappingg)的技术,再加上一个设计的工具(Designer)。实质就是以实体数据模型为主,通过Entity Framework Designer(EF设计器),利用抽象化数据结构的方式,将每个数据库对象转化为应用程序实体(或对象),让数据库的E/R模型(实体/关联模型)转换为对象模型。这样就可以使用面向对象的方式轻松调用和访问数据库。

    比较

    • ADO.NET/SQL数据库存取架构

    因为直接处理Sql语句这种系统开发方式具有非常大的弹性,但相对的也存在一些风险,从sql语句的处理到数据类型的转换都有可能发生错误,特别是随着系统规模逐渐增长,这些错误造成的问题越发严重。
    Entity framework 通过实体数据模型映射到底层的数据结构,只需编写C#代码来处理实体数据对象,从而降低了因为不当的SQL语句操作而导致的程序错误与安全性问题。由于数据对象本身具有类型,因此在程序开发过程汇总避免了因为类型转换可能导致错误的程序代码。

    • Entity Framework的数据存取结构

    对象关联映射-ORM

    对象关系映射(英语:(Object Relational Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换  。从效果上说,它其实是创建了一个可在编程语言里使用的--“虚拟对象数据库”。

    面向对象是从软件工程基本原则(如耦合、聚合、封装)的基础上发展起来的,而关系数据库则是从数学理论发展而来的,两套理论存在显著的区别。为了解决这个不匹配的现象,对象关系映射技术应运而生。

    对象关系映射(Object-Relational Mapping)提供了概念性的、易于理解的模型化数据的方法。ORM方法论基于三个核心原则: 简单:以最基本的形式建模数据。 传达性:数据库结构被任何人都能理解的语言文档化。 精确性:基于数据模型创建正确标准化的结构。 典型地,建模者通过收集来自那些熟悉应用程序但不熟练的数据建模者的人的信息开发信息模型。建模者必须能够用非技术企业专家可以理解的术语在概念层次上与数据结构进行通讯。建模者也必须能以简单的单元分析信息,对样本数据进行处理。ORM专门被设计为改进这种联系。

    简单的说:ORM相当于中继数据。具体到产品上,例如ADO.NET Entity Framework。DLINQ中实体类的属性[Table]就算是一种中继数据。

    ORM的含义:

      ① O:Domain Object  领域模型

      ② R:Relational DataBase 关系型数据库

      ③ M : Mapping 映射关系

    ORM的三大核心原则:

      ① 简单性:以最简单的模式建模数据。

      ② 传达性:数据库结构被任何人都能理解的语言文档化。

           ③ 精确性:基于数据模型创建正确标准化的结构。

    二、Entity Framework核心架构

    ①  EDM(Entity Data Model):这是微软提供的一个强大的可视化工具,用来生成 O、R、M的

    ②  两种语法的查询:LINQ to Entities 和 Entity SQL

    ③ ObjectServices:Linq to Entities 和Entity Client Data Provider 之间起到转换作用

    ④ Entity Client Data Provider: 将Lambda转换成SQL语句

    ⑤ ADO.Net Data Provider: 标准的ADO.Net

    ⑥ DataBase:数据库 

    三、四种Entity Framework开发模式

    模型优先(EF设计器)

    使用设计器工具建立模型,再通过模型建立需要的数据库。(空EF设计器)

    数据库优先(EF设计器)

    通过逆向工具针对现存数据库在设计工具中产生对应的模型。(database 的EF设计器)

    模型优先(code first)

    编写程序代码创建模型类,使用模型类创建数据库,通过转移工具维护数据库。(空codefirst模型)

    数据库优先(code first)

    直接通过逆向工具针对现存数据库产生相应的模型类(database code first)

    注:POCO是Plain Old CLR Object的缩写。所谓的POCO就是那些不包括INSERT、ADD、DEL等数据持久化操作的以及不包括任何业务逻辑功能的原始类。只包含最基本的GETTER 和SETTER如下类;

    public class Category
        {
            public int CategoryID { get; set; }
            public string CategoryName { get; set; }
            public string Description { get; set; }
            public byte[] Picture { get; set; }
            public List<Product> Products { get; set; }
        }

    如果在POCO在增加持久化操作就不叫POCO了。那是属于领域模型了。

    详细:在Entity Framework 4中映射现有实体类(POCO)

  • 相关阅读:
    记录一次SpringCloud Alibaba整合Springboot出现的'com.netflix.client.config.IClientConfig' that could not be found
    ysoserial-URLDNS链分析
    DIVA闯关-APP测试
    前端页面直接转换为PDF文件流
    中位数最大问题
    【vim】Linux添加环境变量等
    FFmpeg使用笔记
    【memo】及时留坑
    【album】深度学习 / 机器学习 / 人工智能
    【Linux】软件安装使用【aubio / FFmpeg】
  • 原文地址:https://www.cnblogs.com/fenqinearl/p/11045396.html
Copyright © 2020-2023  润新知