ORM框架之EntityFramework介绍
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 StudioSQLServer等软件无缝集成,作为一位 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开发时开发人员只需要编写对应的数据类(其实就是领域模型的实现过程),然后自动生成数据库。这样设计的好处在于我们可以针对概念模型进行所有数据操作而不必关系数据的存储关系,使我们可以更加自然的采用面向对象的方式进行面向数据的应用程序开发。
5. 结束语

ORM框架之EntityFramework介绍的更多相关文章
- 轻量级ORM框架 QX_Frame.Bantina(二、框架使用方式介绍)
轻量级ORM框架QX_Frame.Bantina系列讲解(开源) 一.框架简介 http://www.cnblogs.com/qixiaoyizhan/p/7417467.html 二.框架使用方式介 ...
- 【EF 4】ORM框架及其流行产品之一EF介绍
导读:跳进了多租户切换数据库的坑,那么就继续走下去吧.在我们的项目中,是运用EF实现对数据库的操作,那么EF其实是.NET系统中,基于ORM框架的一个产品实现.在java那边,则有Hibernate和 ...
- 1.ORM介绍,基本配置及通过ORM框架创建表
1.介绍 ORM全拼Object-Relation Mapping(对象-关系映射) 作用:主要实现模型对象到关系数据库数据的映射 通过ORM框架作为一个中间者或者是一个桥梁,开发者通过定义模型类,属 ...
- 手写开源ORM框架介绍
手写开源ORM框架介绍 简介 前段时间利用空闲时间,参照mybatis的基本思路手写了一个ORM框架.一直没有时间去补充相应的文档,现在正好抽时间去整理下.通过思路历程和代码注释,一方面重温下知识,另 ...
- 轻量级的.Net ORM框架介绍
轻量型 ORM 组件 FluentData 官网https://fluentdata.codeplex.com/ http://www.cnblogs.com/babietongtianta/p/43 ...
- mango(mango ORM框架介绍)
官网地址:http://www.jfaster.org/ mango的中文名是"芒果",它是一个极速分布式ORM框架.目前已有十多个大型线上项目在使用mango,在某一支付系统中, ...
- ORM框架介绍——什么是ORM框架?
1.什么是ORM?对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术.ORM框架是连接数据库的桥梁,只要提供 ...
- 自制简单的.Net ORM框架 (一) 简介
在自己研究ORM之前,也使用过几个成熟的ORM方案,例如:EntityFramework,PetaPoco,Dapper 等,用是很好用,但是对自己来说总是不那么方便,EF比较笨重,Dapper要自定 ...
- ORM框架是什么
ORM框架是什么 对象关系映射,目前数据库是关系型数据库 ORM 主要是把数据库中的关系数据映射称为程序中的对象 目前集中常见的ORM框架1 Nhibernate原因:用的比较多,资料也比较好找. ...
随机推荐
- Colab 实用教程
Google Colab 是什么? Google Colab 是一个免费的云服务,现在它还支持免费的 GPU! 你可以: 提高你的 Python 语言的编码技能. 使用 Keras.TensorFlo ...
- flutter中的异步机制 Future
饿补一下Flutter中Http请求的异步操作. Dart是一个单线程语言,可以理解成物理线路中的串联,当其遇到有延迟的运算(比如IO操作.延时执行)时,线程中按顺序执行的运算就会阻塞,用户就会感觉到 ...
- mysql 远程登陆
1.查询mysql是否启动 netstat -lnp|grep 3306 ps -df |grep mysqld 2.通过TCPIP的方式测试连接 mysql -uqingjiao -padm ...
- 使用 pip wheel 实现 Python 依赖包的离线安装
pip python 依赖 安装 有时候, 需要部署 Python 应用的服务器没有网络连接, 这时候, 你就要把整个 Python 应用做成离线安装包. 借助 wheel, 很容易就可以实现. 首先 ...
- leetcode 560. Subarray Sum Equals K 、523. Continuous Subarray Sum、 325.Maximum Size Subarray Sum Equals k(lintcode 911)
整体上3个题都是求subarray,都是同一个思想,通过累加,然后判断和目标k值之间的关系,然后查看之前子数组的累加和. map的存储:560题是存储的当前的累加和与个数 561题是存储的当前累加和的 ...
- TransitionDrawable
ayerDrawable的一个子类,TransitionDrawable只管理两层的Drawable!两层!两层! 并且提供了透明度变化的动画,可以控制一层Drawable过度到另一层Drawable ...
- Visual Studio Code 上java开发环境搭建
在把一些开源的SDK中java代码转成C#代码时经常需要写点java代码来实验下功能,装个Eclipse或IDEAs吧,好像也不太值当,所以用vs code搭个环境偶尔来实验下.以下: 1.下载并装好 ...
- 消息队列之ActiveMQ学习笔记(一、下载及安装)
1.访问官网地址 http://activemq.apache.org/ ,进入Download 2.选择最新版本 3.或者选择历史版本 4.下载解压后 5.然后再 bin目录下选择对应版本,双击 ...
- 强化学习——Q-learning算法
假设有这样的房间 如果将房间表示成点,然后用房间之间的连通关系表示成线,如下图所示: 这就是房间对应的图.我们首先将agent(机器人)处于任何一个位置,让他自己走动,直到走到5房 ...
- socket编程之黏包
原理概述 上图是我在学习python的socket编程中遇到的黏包问题所画,以实例来说明这个高大上的黏包问题. 我们知道socket()实例中sendall()方法是无论数据有多大,一次性提交写入缓冲 ...