实体框架- Entity Framework 基础篇

以前写数据层D层的时候里面有好多的SQL语句,如何省略到繁琐的SQL语句,微软提供了一种很好的方式-实体框架-Entity Framwork。一种对象映射机制,支持.NET开发人员使用域特定对象来出来关系数据,消除了对开发人员通常需要编写的大部分数据访问代码的需求。

ADO.NET Entity Framework 是微软以 ADO.NET 为基础所发展出来的对象关系对应 (O/R Mapping) 解决方案。实体框架Entity
Framework是ADO.NET中的一组支持开发面向数据的软件应用程序的技术。是微软的一个ORM框架。

什么是ORM框架?广义上指的是面向对象的对象模型和关系模型数据库的数据结构之间的相互转换。狭义上,可以被认为,基于关系型数据库的数据存储,实现一个虚拟的面向对象的数据访问接口。理想情况下,基于这样一个面向对象的接口,持久化一个OO对象应该不需要了解任何关系型数据库存储数据的实现细节。如下图:O(对象模型)-M(映射关系)-R(关系模型)。

Find out about the
different ways you can use Entity Framework to access a relational database from your .NET application.

实体框架的三种实现方式:即ModelFirst ,DBFirst ,CodeFirst。

ModelFirst通过已有的实体类图转换生成sql脚本,建立数据库。DBfirst根据已有的数据库映射出对象的实体类。CodeFirst根据已有的实体类的代码生成SQL脚本,建立数据库,支持跨数据库。具体的搭建过程不再赘述。

众说EF优缺点:

贴一:

改变在现有系统使用EntityFramework的优势是什么?

? All -in-1框架的类映射表,需要编写映射代码, 并且是很难维护的。

? 可维护性,易于理解的代码,无需创造大的数据访问层。

? 提供LINQ查询数据库,这需要从初级开发人员不太了解SQL。

? EF可以用作用于数据服务和OData Service的基础设施。

     什么的情况下,不建议使用EF呢?

? 实时的应用程序。

? 只能通过存储过程访问数据库。 EF的优势是:跟踪实体状态Change时,不仅仅在存储过程上.(即使EF确实对存储过程支持有限的)。

? 频繁插入操作(Insert),  并且EF不支持大数据Bulk 插入。

? 频繁更新操作,更新的目标主要是当多行(用一个单值)

例如:UPDATE 表名 SET ColumA = 10 Where ColumnB =?

这种更新操作更好的使用的ExecuteNonQuery(也可从Context上下文或直接从Ado.Net)。

? 反范式的表设计和高性能查询。 EF产生查询,他们是难以维护的,它并不能很好地支持映射到不规范的表。

? 对程序有非常的性能要求, 需要对每个查询进行监控.

摘自:http://www.cnblogs.com/wintersun/archive/2013/03/16/2963992.html

贴二:

Entity Framework是M$提供的一个ORM框架,它旨在为小型应用程序中数据层的快速开发提供便利。

nuget上185W多的下载量,说明.Net开发人员还是比较喜欢用EF的。但是EF在提供了便利性的同时也有许多缺点,以下就是我认为不应该应用EF的场景:

  • 非SQL Server数据库且无该数据库的DataProvider
  • 高性能要求。在进行一些复杂查询的情况下,EF的性能表现不太好,而开发人员又无法控制SQL语句的生成
  • 高安全性要求。有时候DB用户仅仅具有EXEC的权限,而EF自动生成的类又不好用,还是需要自己来写

ps:  看了很多关于它的评价,坦然讲,这里不免有拒绝的声音。这可是微软关于数据处理的一大进步。小编还是先接受并深入了解后再做定义吧。存在即是合理。

时间: 2025-01-02 13:58:55

实体框架- Entity Framework 基础篇的相关文章

实体框架(Entity Framework)快速入门--实例篇

在上一篇 <实体框架(Entity Framework)快速入门> 中我们简单了解的EF的定义和大体的情况,我们通过一步一步的做一个简单的实际例子来让大家对EF使用有个简单印象,看操作步骤 第一步:创建控制台项目 这个就不多说了,如果新建项目你还不知道,那先去学学基础吧. 第二步:创建实体模型 在项目上右击 添加新建项目→Ado .Net 实体数据模型 如下图所示: 第三步:与现有的 数据库 进行连接生成EF实体 在做这步之前,首先确定你是否已经有现有数据库,当然在这提供我自己的数据库脚本.

C#代码生成工具:文本模板初体验 使用T4批量修改实体框架(Entity Framework)的类名

转自:http://www.cnblogs.com/huangcong/archive/2011/07/20/1931107.html 在之前的文本模板(T4)初体验中我们已经知道了T4的用处,下面就看看如何用它来实现批量修改实体框架(Entity Framework)中的类名.我们都知道ADO.NET 实体数据模型中有一种方式是以数据库模型来生成数据模型的,这是个很简便的实体数据模型生成的方式,但是因为微软提供的自定义接口不足,我们无法实现对生成的数据模型实体类批量进行修改(至少我上网找了很久

实体框架Entity Framework 4.1快速入门

介 绍 在旧的Entity 框架中,开发者可以从已存在的数据库中产生业务实体的模型,这种开发方法被称为数据库驱动的开发方法.而在4.1的Entity Framework中,支开发者先创建实体业务类,然后再产生相关的数据库文件,这种开发方法可以称为“代码先行”的开发方法.这种方法对于开发者来说是很有好处的,首先,会让开发者从面向对象的思维角度出发,去构建业务逻辑中的实体模型,然后再根据实际的需要去生成数据库文件,是真正的面向对象的思维开发方法. 本文中要使用Entity Framework 4.1

Entity Framework基础—第二篇

实体框架(Entity Framework) 简称EF,属于数据持久(持久保存)架里面的一种,其他的还有NHibernate,ibaties,Dapper.PetaPOCO...等,都是基于ORM思想. 首先介绍下O/R Mapping(ORM) 1.什么是ORM?ORM指的是面向对象的对象模型和关系数据库的数据结构之间的相互转化,可以理解为把表实体和表相互转化(在任何平台都适用,如php,java等). 传统ADO.net操作数据库: 基于ORM思想操作数据库: 接下来我们就一步步创建项目:

Entity Framework基础01

学习了ADO.NET的相关知识,掌握了它对数据库表的基本操作,但是实际在开发项目应用中微软为我们开发ef这个ORM,使用它可以很方便的利用ADO.NET来操作DBMS,使得我们开发项目的着重点放在业务逻辑层上面,从而轻数据库的设计. 一:Entity Framework 1 解释   *ef说白了就是对ADO.NET的包装,它可以将数据库中的数据变成实体的模型,也可以将模型变成为数据库中的表,很是方便.   *ef里面重要的就是数据上下文.它是生成数据查询语句的关键.结果实际返回的是IQuery

Entity Framework 基础

一.什么是Entity Framework 微软官方提供的ORM工具,ORM让开发人员节省数据库访问的代码时间,将更多的时间放到业务逻辑层代码上.EF提供变更跟踪.唯一性约束.惰性加载.查询事物等.开发人员使用Linq语言,对数据库操作如同操作Object对象一样省事. EF有三种使用场景,1. 从数据库生成Class,2.由实体类生成数据库表结构,3.  通过数据库可视化设计器设计数据库,同时生成实体类. O/RM是什么? ORM 是将数据存储从域对象自动映射到关系型数据库的工具.ORM主要包

Entity Framework基础&mdash;第四篇(Model First)

用Model First构建实体模型,步骤如下: 1.创建一个实体模型 2.创建实体:在实体数据模型设计器中右击鼠标新增一个实体 3.新增属性: 4.属性设置(F4): 5.添加关联: 6.根据模型生成数据库   添加数据: static void Main(string[] args) { Add(); } /// <summary> /// 添加数据 /// </summary> private static void Add() { //1.创建上下文 DataModelCo

Entity Framework基础-第三篇

查询的两种过滤方法: 1.linq to EF 数据库中过滤: 下图我们能看出来Linq表达式在执行的时候已经为我们生成高效的sql语句, DemoTestEntities dbContext = new DemoTestEntities(); var demoTest = from u in dbContext.UserInfo where u.UserId>0 select u; foreach (var item in demoTest) { Console.WriteLine(item.

Entity Framework 基础操作(1)

EF是微软推出的官方ORM框架,默认防注入可以配合LINQ一起使用,更方便开发人员. 首先通过SQLSERVER现在有的数据库类生产EF 右键->添加->新建项,选择AOD.NET实体数据模型,来自数据库的Code FIrst 完成添加后会生成多个文件,并且在你的项目的配置文件中有数据库的链接字符串,下面文件中 “name=Test”, Test就是连接字符串的name public partial class TestDB : DbContext { public TestDB() : ba