EF总结--EF简介

EF全称Entity Framework,说到EF不得不提ORM。

ORM全称Object Relationship Mapping,广义地讲,就是面向对象的对象模型和关系数据库的数据结构之间的相互转换。通俗地解释,即表实体和表之间的相互转换。ORM体现的是一种思想,表实体的变化映射到表的变化。也就是说,你对实体进行增删改查引起的实体变化,会自动更新到数据库。

  • 我们为什么需要ORM?

1.数据库的数据类型和程序中的数据类型不一致,如在数据库中是char,varchar,而在程序中用string。

2.软件开发过程中有时需要更换数据库。

在我们的机房收费系统中我们用了抽象工厂+反射+配置文件来应对更换数据库这种变化,当更换数据库时,我们需要修改配置文件,同时我们要再建一组D层的类,有原来的SQL……DAL.cs,变成诸如Oracle……DAL.cs,似乎还是很麻烦。

基于以上这种软件开发中面向对象的思想和关系数据库之间不一致的问题,有了ORM。

EF则是根据ORM思想,生产出的一款产品,EF是实现ORM思想的一种框架。

  • EF原理

ObjectContext操纵数据库的上下文,它是我们操纵数据库的统一入口。

XML映射,我们可以直观地了解一下。

在生成好的实体数据模型处右击--打开方式--选择XML编辑器

在这里就描述了实体和表的映射关系:SSDL, CSDL 和C-SMapping,分别是对表,表实体和它们之间映射关系的描述。

总之概括地说一下EF的原理,即:通过对Context(上下文)执行增删改查操作,然后通过XML的映射关系生成数据库中的脚本,然后执行脚本,从而将变化更新到数据库。

现在,来解决一下通过EF如何应对数据库的变化:

只需要更改AppConfig文件中的ConnectionString配置节中的Provider,如果是SQL Server,则Provider是provider=System.Data.SqlClient。更换了Provider后,根据映射关系生成的脚本会自动变化。这样就不需要我们再新建一组用户访问其他数据库的D层的类了。

  • EF与ADO.NET性能对比

ADO.NET是访问数据库的技术,通过下图,大家可以看一下二者的关系,我现在理解的是虽然EF很强大,智能,但是它也需要在一定程度上依赖于ADO.NET 。

以下的文章大家可以直观看一下二者在代码中和性能上的区别。

http://www.mybdqn.com/wsxt/7003/

时间: 2024-11-01 19:35:31

EF总结--EF简介的相关文章

[EF]使用EF简单增删改查

目录 认识EF 添加数据 删除数据 修改数据 查询数据 总结 认识EF ADO.NET Entity Framework 是微软以ADO.NET为基础所发展出来的对象关系对伊(O/R Mapping)解决方案,早起被称为ObjectSpage,最新版本EF6. 实体框架Entity Framework是ADO.NET中的一组支持面向数据的软件应用程序的技术.是微软的一个ORM框架. 什么是O/R Mapping 广义上,ORM指的是面向对象模型和关系数据库的数据结构之间的相互转换. 狭义上,OR

【EF】EF Code First Migrations数据库迁移

1.EF Code First创建数据库 新建控制台应用程序Portal,通过程序包管理器控制台添加EntityFramework. 在程序包管理器控制台中执行以下语句,安装EntityFramework. PM> Install-Package EntityFramework 安装成功后,界面提示如下图: 在新建的Portal控制台应用程序中添加两个实体类,代码结构如下: 其中,类文件PortalContext.cs的代码如下: using System; using System.Colle

【EF】EF Code-First数据迁移

Code-First数据迁移  首先要通过NuGet将EF升级至最新版本. 新建MVC 4项目MvcMigrationDemo 添加数据模型 Person 和 Department,定义如下: 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Web; 5 using System.ComponentModel.DataAnnotations; 6 using Syste

EF架构~EF异步改造之路~仓储接口的改造~续

回到目录 在写完仓储接口的改造改造后,总觉得有个代码的坏味道,这种味道源于它的DRP,即重复的代码太多了,即异步操作和同步操作其实只是在insert,update和delete上有所不同,获取数据的方法都是一样的,所以,我最后决定,将异步的接口进行改造,让它更加合理,方法后都加上Async的后缀,看上去也更像是个异步方法,呵. 改造后的异步接口 /// <summary> /// 异步操作 /// 基础的数据操作规范 /// 与ORM架构无关 /// </summary> ///

【EF】EF框架 Code First Fluent API

在Code First方法中,还可以通过Fluent API的方式来处理实体与数据表之间的映射关系. 要使用Fluent API必须在构造自定义的DbContext时,重写OnModelCreating方法,在此方法体内调用Fluent API. 如下面代码所示: public class BlogDbContext : DbContext { public BlogDbContext() : base("name=BlogDB2005") { } protected override

采用MiniProfiler监控EF与.NET MVC项目(Entity Framework 延伸系列1)

小分享:我有几张阿里云优惠券,用券购买或者升级阿里云相应产品最多可以优惠五折!领券地址:https://promotion.aliyun.com/ntms/act/ambassador/sharetouser.html?userCode=ohmepe03 前言 Entity Framework 延伸系列目录 今天来说说EF与MVC项目的性能检测和监控 首先,先介绍一下今天我们使用的工具吧. MiniProfiler~ 这个东西的介绍如下: MVC MiniProfiler是Stack Overf

EF中执行sql语句

EF原理 EF 会自动把 Where().OrderBy().Select()等这些编译成"表达式树(Expression Tree)",然后会把表达式树翻译成 SQL 语句去执行.(编译原理,AST)因此不是"把数据都取到内存中,然后使用集合的方法进行数据过滤",因此性能不会低.但是如果这个操作不能被翻译成 SQL 语句,则或者报错,或者被放到内存中操作,性能就会非常低 跟踪EF的查询Sql语句: DbContext 有一个 Database 属性,其中的 Log

VS2015安装EF Power Tools

前言 最近在研究EF觉得EF Power Tools比较强大,可以利用其特性来进行Code First模型验证等等,本以为在VS2015扩展和更新中能找到EF Power Tools,结果未找到,还得去官网下载,下面是安装步骤.供需要在VS2015上安装VS Power Tools的园友作一个参考. 第一步 去官网下载,这是链接 EF Power Tools 第二步 将下载的EFPowerTools.vsix扩展名改为zip 第三步 解压压缩文件,如下: 第四步 打开压缩文件中的extensio

8天掌握EF的Code First开发系列之3 管理数据库创建,填充种子数据以及LINQ操作详解

本篇目录 管理数据库创建 管理数据库连接 管理数据库初始化 填充种子数据 LINQ to Entities详解 什么是LINQ to Entities 使用LINQ to Entities操作实体 LINQ操作 懒加载和预加载 插入数据 更新数据 删除数据 本章小结 本人的实验环境是VS 2013 Update 5,windows 10,MSSQL Server 2008. 上一篇<Code First开发系列之领域建模和管理实体关系>,我们主要介绍了EF中“约定大于配置”的概念,如何创建数据