第一篇:Entity Framework 简介
先从ORM说起吧,很多年前,由于.NET的开源组件不像现在这样发达,更别说一个开源的ORM框架,出于项目需要,以及当时OOP兴起(总不至于,在项目里面全是SQL语句),就自己开始写ORM框架。要开发ORM框架首先要了解ORM概念。
ORM 对象关系映射,O(Object) 对象,在项目中就是实体,更加精确的来说就是数据Model,也可以说持久化类。R(Relation) 关系数据,M (Mapping)映射,将对象映射到关系数据,将关系数据映射到对象的过程。
更加直观理解就是,ORM 就是以OOP思想,产生增删改查SQL语句
了解ORM概念之后,你会发现,其实ORM框架,主要难点在M映射部分
O 创建简单的实体对象就可以
R 关系数据库中数据表
M 难点要如何把实体对象与关系数据库具体数据表关联起来,然后产生相应数据库操作SQL?
当时,幸好.NET 有两样技术比较流行
1. 特性
2. 反射
当时主要利用 特性 来标识 实体 映射 具体数据库 TableName ,属性 对应的 具体表的ColumnName,还有主外建,是否自增量,默认值 等等,都用特性来标识。
将实体,属性上的特性反射后,然后根据增删改查操作方法,就可以产生对应的SQL语句。
至此一个简单的ORM框架,就有了。
这几年,.NET 技术有了飞速发展,有很多写得不错的开源组件如雨后春笋般涌现,也包含ORM框架
Hibernate , Drapper,EntityFramework 等等
EntityFramework 版本历史简介
| EF版本 | .net framework和IDE版本 | 主要功能 |
| EF(or EF3.5) | Visual Studio 2008 SP1 (.NET 3.5 SP1) | 基本的O/R映射支持,使用DB First开发模式 |
| EF 4 | Visual Studio 2010 (.NET 4.0) | 支持POCO实体 延迟加载 提高单元测试能力 自定义的代码生成机制 支持Model First开发模式 |
| EF 4.1 | NuGet | 提供简化的DbContext接口 支持Code First开发模式 |
| EF 4.1.1 | 过渡版本 | 支持Power Tools工具 |
| EF 4.2 | 过渡版本 | 解决bug并优化 |
| EF 4.3 | Visual Studio 2010 (.NET 4.0) | 基于Code First开发模式的代码迁移策略 Migrations |
| EF 4.3.1 | Visual Studio 2012 (.NET 4.5) | 提供对 LocalDb 数据库的支持 |
| EF 5 | Visual Studio 2012 (.NET 4.5) | 提供对枚举类型的支持 Table-Valued functions表值函数 空间数据类型(spatial types) 整体性能优化提升 实体模型设计器、多图模型 批量导入存储过程 |
| EF 6 | Visual Studio 2013 (.NET 4.5) | Power Tools加强 EF脱离Visual Studio和.NET通过NuGet单独发布 可配置不稳定连接的重试次数等 支持.NET 4.5中基于Task的异步编程模式 Async Query and Save 优化的配置选项 Code-Based Configuration 支持依赖注入和服务定位 Dependency Resolution 低级的EF拦截器及SQL日志 Interception/SQL Loggin 使用Mock单元测试 using a mocking framework or writing your own test doubles 使用已有的DbConnection创建DbContext 提升事务支持 Improved Transaction Support 优化LINQ to Entities查询性能 优化(View Generation)性能 支持自定义实现Entity的Equals和GetHashCode方法 DBSet.AddRange/RemoveRange DbChangeTracker.HasChanges 扩展的SqlFunctions,SqlCeFunctions |
| EF 6.0.1 | Visual Studio 2013 (.NET 4.5) | fix some performance issues during warm-up for EF models. |
| EF 6.0.2 | Visual Studio 2013 (.NET 4.5) | The tooling for Visual Studio 2012 and Visual Studio 2013 is available on the Microsoft Download Center. You only need to install the tooling if you want to use Model First or Database First |
| EF 6.1 | Visual Studio 2013 (.NET 4.5) |
Tooling consolidation provides a consistent way to create a new EF model. This feature extends the ADO.NET Entity Data Model wizard to support creating Code First models, including reverse engineering from an existing database. These features were previously available in Beta quality in the EF Power Tools. Handling of transaction commit failures provides theCommitFailureHandler which makes use of the newly introduced ability to intercept transaction operations. The CommitFailureHandler allows automatic recovery from connection failures whilst committing a transaction IndexAttributeallows indexes to be specified by placing an [Index] attribute on a property (or properties) in your Code First model. Code First will then create a corresponding index in the database The public mapping API provides access to the information EF has on how properties and types are mapped to columns and tables in the database. In past releases this API was internal |
EntityFramework 刚刚出来时,反响就比较不错。那时我有接触一些,不多,也不知道当时为什么这么好的东西,没有深耕一下。
2014 年,去了一家创业公司,做技术主管,做架构开发,当时定的 ASP.NET MVC 5&Entity Framework 6做开发框架。
再次了解到EntityFramework的强大。
Entity Framework 有三种实作方式
1. DataBase First 数据库先行
2. Model First 模型先行
3. Code First 代码先行
前两种就是拖控件,按照指引一步步,就可以完成Entity Framework 实现。
Code First 就是代码纯手工打造。
Entity Framework 介绍暂时介绍完成,我们这个系列实作Entity Framework 方式是Code First,因为Code First 才能更加深入了解Entity Framework 工作原理。
我们这个系列采用是 Entity Framework 6.1 版本,最后这几个版本区别不大。
CodePlex : http://entityframework.codeplex.com/
GitHub : https://github.com/aspnet/EntityFramework/
开发指南:https://docs.efproject.net/en/latest/
敬请期待
第二篇:Entity Framework CodeFirst & Model 映射
第一篇:Entity Framework 简介的更多相关文章
- 第一篇 Entity Framework Plus 之 Audit
一般系统会有登陆日志,操作日志,异常日志,已经满足大部分的需求了.但是有时候,还是需要Audit 审计日志,审计日志,主要针对数据增,改,删操作数据变化的记录,主要是对数据变化的一个追踪过程.其中主要 ...
- 第三篇 Entity Framework Plus 之 Query Cache
离上一篇博客,快一周,工作太忙,只能利用休息日来写一些跟大家分享,Entity Framework Plus 组件系列文章,之前已经写过两篇 第一篇 Entity Framework Plus 之 A ...
- 第二篇 Entity Framework Plus 之 Query Future
从性能的角度出发,能够减少 增,删,改,查,跟数据库打交道次数,肯定是对性能会有所提升的(这里单纯是数据库部分). 今天主要怎样减少Entity Framework查询跟数据库打交道的次数,来提高查询 ...
- 第四篇 Entity Framework Plus 之 Batch Operations
用 Entity Framework 进行 增,删,改.都是基于Model进行的,且Model都是有状态追踪的.这样Entity Framework才能正常增,删,改. 有时候,要根据某个字段,批量 ...
- .NET基础篇——Entity Framework 数据转换层通用类
在实现基础的三层开发的时候,大家时常会在数据层对每个实体进行CRUD的操作,其中存在相当多的重复代码.为了减少重复代码的出现,通常都会定义一个共用类,实现相似的操作,下面为大家介绍一下Entity F ...
- Entity Framework入门教程(1)---Entity Framework简介
什么是Entity Framework 学习EF的前提:熟练使用Linq和Ado.net,因为在使用EF框架进行开发时,我们大多数情况使用Linq进行查询和操作,而EF的底层实现用的是Ado.net. ...
- Entity Framework简介
前言 很久很久之前就想来好好的学习一下EF,一直也是各种理由导致一直也没有好好的开始,现在下定决心了,不管怎样一定要把这先走一遍,并且把自己学到的相关EF的知识进行记录,以备后用,也望广大博友们一起来 ...
- 【转】Entity Framework简介
Entity Framework Core 可基于现有数据库创建模型,也可基于模型创建数据库. 以下文字来源于:http://www.entityframeworktutorial.net/what- ...
- Entity Framework 简介
Entity Framework Entity Framework 的全称为 ADO.NET Entity Framework,简称 EF. 1.与 ADO.NET 的关系 Entity F ...
随机推荐
- .NET面试题系列[11] - IEnumerable<T>的派生类
“你每次都选择合适的数据结构了吗?” - Jeffery Zhao .NET面试题系列目录 ICollection<T>继承IEnumerable<T>.在其基础上,增加了Ad ...
- 剑指Offer面试题:3.替换空格
一.题目:替换空格 题目:请实现一个函数,把字符串中的每个空格替换成"%20".例如输入“We are happy.”,则输出“We%20are%20happy.”. 在网络编程中 ...
- 辛巴学院-Unity-剑英陪你零基础学c#系列(四)函数和封装
辛巴学院:正大光明的不务正业. 国庆长假结束了,我的心情是这样的: 你总是起不早,起不早独自一个人沉睡到天亮你无怨无悔的梦着那副本我知道你根本就不想上班你总是起不早,起不早放假总是短暂,上班太难请个病 ...
- Struts2.X——搭建
今天是我第一次用博客,虽然还有好多的不懂,但是我还是会努力的把自己学到的写下来,分享给大家: 一,SSH框架中的struts2的搭建流程 1.在搭建struts2之前,我们首先要有struts2的ja ...
- 搭建LNAMP环境(六)- PHP7源码安装MongoDB和MongoDB拓展
上一篇:搭建LNAMP环境(五)- PHP7源码安装Redis和Redis拓展 一.安装MongoDB 1.创建mongodb用户组和用户 groupadd mongodb useradd -r -g ...
- Java final 关键词修饰类、方法、变量
1. final修饰类 被修饰的类不能被继承,也没有子类.假如随意创建这些类的子类,子类可能会错误的修改父类的实现细节.出于安全原因,类的实现细节不允许有任何改动.在创建对象模型的时候,确信这个类不 ...
- WPF入门教程系列十五——WPF中的数据绑定(一)
使用Windows Presentation Foundation (WPF) 可以很方便的设计出强大的用户界面,同时 WPF提供了数据绑定功能.WPF的数据绑定跟Winform与ASP.NET中的数 ...
- WPF datagrid 加入图片
<DataGridTemplateColumn Header="图像" Width="SizeToCells"> <DataGridTempl ...
- 应用程序框架实战二十一:DDD分层架构之仓储(介绍篇)
前面已经介绍过Entity Framework的工作单元和映射层超类型的封装,从本文开始,将逐步介绍仓储以及对查询的扩展支持. 什么是仓储 仓储表示聚合的集合. 仓储所表现出来的集合外观,仅仅是一种模 ...
- 5分钟用Spring4 搭建一个REST WebService
前置技能 ① 使用maven来管理java项目 这个技能必须点一级,以便快速配置项目. 本文实际上是我学习Spring的过程中搬的官网上的demo,使用maven配置项目. ② jdk 1.8+ ...