ORM框架之EntityFramework介绍
1. 简介
大家好!我是高堂。
作为一位伪前端程序猿,我给大家介绍一下微软的自家的ORM框架
。
ADO.NET Entity Framework
以下简称EF框架
。
2. 什么是 ORM框架?
ORM
=> 对象关系映射(英语:Object Relational Mapping)
ORM框架
用途 => 为了解决软件工程
与数据库
打交道的中间层。
为什么需要
ORM框架
呢?
因为软件工程
是面向对象为基本原则; 而数据库
则是从数据理论发展而来的;两套理论存在明显的的差异。
ORM框架
到底是什么呢? 我还是不太清楚!!!
ORM
其实有三大核心原则:
- 简单:以最基本的形式建模数据。
- 传达性:数据库结构被任何人都能理解的语义化文档。
- 精准性:基于数据模型创建正确标准了的结构。
简单的说
ORM
相关于中继数据。具体到产品上,例如ADO.NET Entity Framework
实体类的属性,就算是一种中继数据。在后面我会给大家详细介绍EF框架
。
3. 世面上有哪一些 ORM 产品呢?
NHibernate框架
来源于 Java 的Hibernate 框架
,采用XML文件配置的方式。Castle ActiveRecord 框架
是 Castle 中的一个子项目,底层封装了 NHibernate,改用 Attribute 来代替配置文件,这样就不用像 NHibernate 那样配置复杂的文件了。iBATIS.NET 框架
分为 DataMapper 和DataAccess两部分,DataMapper是这个框架的核心, DataMapper使用XML文件实现从实体到 SQL statements 的映射,学习起来非常简单,使用DataMapper 以后,我们可以自由的使用 SQL 语句或存储过程; DataMapper 允许我们通过一个简单的接口来操作数据,而不必了解底层实现的细节。ADO.NET Entity Framework框架
是NET开发人员的福音,微软的东西,简单,容易上手等特点。和Visual Studio
SQLServer
等软件无缝集成,作为一位 NET 阵营的 童鞋们,你们懂的!
4. EF框架 的介绍
EF框架
简介:
以 Entity Data Model (EDM) 为主,将数据逻辑层切分为三块,分别为 Conceptual Schema, Mapping Schema 与 Storage Schema 三层,其上还有 Entity Client,Object Context 以及 LINQ 可以使用。
EF框架
优缺点:
- 非SQL Server数据库且无该数据库的DataProvider;
- 高性能要求。在进行一些复杂查询的情况下,EF的性能表现不太好,而开发人员又无法控制SQL语句的生成;
- 高安全性要求。有时候DB用户仅仅具有EXEC的权限,而EF自动生成的类又不好用,还是需要自己来写。
EF框架
发展历史:
版本 支持.NET 发布情况 备注 EntityFramework 3.5 2.0+ 包含于.NET 3.5中 支持EDMX生成,通过扩展可支持POCO类的生成 Entity Framework 4.0 4.0+ 包含于.NET 4.0中 Entity Framework 4.X 可通过NuGet获取 支持Database First、Model First、Code First三种生成模式 Entity Framework 4.5 4.5+ 集成于.NET 4.5中 Entity Framework 5.X 4.5+ 可通过NuGet获取 支持枚举字段,性能有较大提升,支持.NET 4.0的版本 为Entity Framework 4.4 EnittyFramework 6.X 4.0+ 可通过NuGet获取 EnittyFramework 7.X 4.6+ 可通过NuGet获取 现在更名为 EntityFramework Core,结合Net Core使用,多用于跨平台
4. EF的开发模式
从4.1版本开始,EF开始支持三种开发模式
Database First模式
我们称之为“数据库优先”,前提是你的应用已经有相应的数据库,你可以使用EF设计工具根据数据库生成数据数据类,你可以使用Visual Studio模型设计器修改这些模型之间对应关系。
Model First模式
我们称之为“模型优先”,这里的模型指的是“ADO.NET Entity Framework Data Model”,此时你的应用并没有设计相关数据库,在Visual Studio中我们通过设计对于的数据模型来生成数据库和数据类。
Code First模式
我们称之为“代码优先”模式,是从EF4.1开始新建加入的功能。使用Code First模式进行EF开发时开发人员只需要编写对应的数据类(其实就是领域模型的实现过程),然后自动生成数据库。这样设计的好处在于我们可以针对概念模型进行所有数据操作而不必关系数据的存储关系,使我们可以更加自然的采用面向对象的方式进行面向数据的应用程序开发。