【ITOO】 EF框架之ORM思想的体现

在项目中,不管是哪个子系统,底层框架用的都是一套东西,在对实体的操作一方面用的就是EF。

首先要问三个问题

第一,它是什么?

第二,为什么用?

第三,怎么用?

1.What  is EF

EF(Entity Framework),is
an object-relational mapper that enables .NET developers to workwith relational data using domain-specific objects. Entity Framework allows youto create a model by writing code or using boxes and lines in the EFdesigner.Both of these approaches can be used
to targe an existing database orcreate a new database.

也就是说EF是通过跟踪实体的变化,根据映射关系以及实体的变化生成相应的SQL脚本,并执行到数据库中去。在使用过EF之后我们都知道,EF有三种模式,可以创建一个新的数据库,也可以使用原有的数据库。但最终都是在通过对实体的操作去操作数据库,也就是直接操作的对象是实体。这也就把对实体的变化映射到数据库表的变化了,这种思想正是ORM。那么什么是ORM呢?

如果别人问你一个问题,什么是ORM,也许你可以随口说出对象关系映射,英文:Object
Relational Mapping,简称ORM。下面我们用图来说明一切吧。

O就是对象

R就是数据库的关系,可以说关系数据库表

Mapping是一种映射,这种映射可以把对对象的操作映射到数据库表关系上。实现对象到关系数据库的映射。

而与我们的三层或者是熟悉的框架结合就是下面这样。在B层和U层,我们是面向对象的。当对象的信息发生变化的时候,我们需要把对象的信息保存在关系数据库中。有了ORM之后,我们只需对对象中的实体操作即可。也可以说ORM是一个中间件,主要实现程序对象到关系数据库数据的映射。

2.Why useEF

在学习EF以前,一直的以前,当你开发一个应用程序的时候,可能会写不少数据访问层的代码,用来从数据库读取对象信息,增删改查的一些操作等。在DAL层中写了很多的方法来读取数据,改变对象状态的语句,而这些代码有太多的重复。例如,我们在机房中时,传入一个实体,要使用SQLCommand对象添加参数,所有属性要一一对应,设置CommandText属性的存储过程,然后运行SQLCommand。而每个对象都要重复写类似这样的代码,同理查询和更新。一个好的方法就是能有一个机制可以为你自动生成DAL,而你关系的重心落在对象身上就好。恰好EF就是体现这种思想的一种框架,这也就回答了开篇的第二个问题。

3.How touse it

既然EF是ORM的一种体现,而且我们也知道EF有三种模式,在项目中我们所使用的就是EF,队友说过一句话,EF其实不难,跟着敲一遍代码就懂了,我也说,再多的原理都不如自己动手做一遍,怎么使用在学习EF三种模式的时候会有所说明。

整篇文章似乎都是叙述什么是ORM,可能因为个人对ORM情有独钟吧,实在说EF,意在体现ORM思想。小编只是在想ORM这种思想很微妙,很前卫,把面向对象的思想用的淋漓尽致,通过一种映射关系,把所有的操作全部映射过去。这是一种进步,一个思想上的进步。以后的我们不再围绕着数据库绕圈,而是要围着实体转了。

时间: 2024-10-12 07:24:35

【ITOO】 EF框架之ORM思想的体现的相关文章

[ASP.NET MVC]: - EF框架学习手记

1.EF(Entity Framework)实体框架EF是ADO.NET中的一组支持开发面向数据的软件应用程序的技术,是微软的一个ORM框架. 2.什么是ORM?ORM指的是面向对象的对象模型和关系型数据库的数据结构之间的互相转换.(表实体跟表之间的相互转换)ORM框架有很多,EF框架是ORM框架的其中一种,是实现了ORM思想的框架. O=>表实体M=>映射关系R=>数据库.表 3.创建EF,添加-新建项-ADO.NET 实体数据模型<configuration>  <

校园视频管理-EF框架基础

最近在做一个新的项目,俗话说在实践中成长,确实是成长不少.新的知识接踵而来,最近帮助我们组长搭框架的时候,学习到了EF的知识,下面总结一下. 一,ORM和EF的关系 ORM:帮助我们开发人员跟踪实体的变化,并将实体的变化翻译成sql脚本,并执行到数据中去,也就是将实体的变化映射到了表的变化. EF:跟踪实体变化,把变化映射到表中. 关系:ORM是一种思想,EF是实现这种思想的框架. 二,实战-从数据库中获取实体 (1)在新建的项目中新建:ADO.NET实体数据模型 (2)选择从数据库生成 (3)

ASP.NET MVC+EF框架+EasyUI实现权限管理系列

http://www.cnblogs.com/hanyinglong/archive/2013/03/22/2976478.html ASP.NET MVC+EF框架+EasyUI实现权限管理系列之开篇 前言:博客又有一段时间没有更新了,心里感觉这段时间空空的,好像什么都没有学下,所以就想写博客,所以就有了这个系列,这里当然也要感谢大家了,因这个 项目我已经上传了,得到了很多网友的评价,也有好多人发邮件给我说这个框架容易出现问题,不能访问,这也是支持我写这个系列的动力,我将这个项目写成一个 系列

ASP.NET MVC+EF框架+EasyUI实现权限管理

4.为什么使用MVC而不是用WebForm呢? (1)为什么使用MVC而不是用WebForm呢?这个是我临时想的,因为我就是想说明一下WebForm和MVC的优缺点,来可以使大家能够更好地理解 MVC和WebForm,而不像某些人说MVC会替代WebForm,我个人认为这个可能性很小,因为各有各的好处,看在哪里使用吧,下面我就简单介绍下 WebForm和MVC的优缺点. (2)WebForm介绍 1)优点 1):支持事件模型,取决于微软提供了丰富的服务器端组建,WebForm可以快速的搭建Web

自己实现的一个简单的EF框架(反射实现)

我实现了一个简单的EF框架,主要用于操纵数据库.实现了对数据库的基本操纵--CRUD 这是项目结构 这是一个 core 下的 DLL 写了一个数据库工厂,用于执行sql语句.调用sql语句工厂 写了一个sql语句工厂,用于生成sql语句.调用类型工厂 写了一个类型工厂,用于获取所需的类型,识别特性等. appsettings.json是配置文件 最后一个是使用说明 我实现过程的首先从底层开始. 首先写的是类型工厂 结构 BaseTypeHelper.cs 是基础的类型帮助类 TypeHelper

ASP.NET MVC+EF框架+EasyUI实现权限管理系列(4)-业务逻辑层的封装

原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(4)-业务逻辑层的封装 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇)   (1):框架搭建    (2):数据库访问层的设计Demo    (3):面向接口编程 前言:前面几篇博客我们基本已经介绍完了搭建整个项目和数据库访问层以及一些业务逻辑层的实现,当然了,我们的数据库访问层这样还是可以在进行封装的,但是我到这里就行了吧,项目也不大,不需要那么麻烦的,那么我们今天开始介绍我们需要介绍的内容,那就是我

ASP.NET MVC+EF框架+EasyUI实现权限管理系列(2)-数据库访问层的设计Demo

原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(2)-数据库访问层的设计Demo ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇) (1)框架搭建 前言:这篇博客我们继续来实现我的权限系列,这个博客一段时间也没有写了,重点是我在想还写不写,最终我决定还是写下去,因为我们是为了学习,当别人提出意见的时候,我们可以参考和采纳,但是我们不一定非要采纳,上几篇博客大家都说用CodeFirst来实现,是啊,现在基本很少有人用我的这种方法来实现了,都是用CodeF

ASP.NET MVC+EF框架+EasyUI实现权限管理系列(6)- EF上下文实例管理

原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(6)- EF上下文实例管理 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇)   (1):框架搭建    (2):数据库访问层的设计Demo    (3):面向接口编程   (4 ):业务逻辑层的封装  (5):前台Jquery easyUI实现 前言:通过前面的五篇博客我们已经对权限系统的后台架构进行了详细的说明,那么我再前面的博客中也说到了我们的后台架构还会再改的,我准备这段时间我们继续完善我们的后台

ASP.NET MVC+EF框架+EasyUI实现权限管理系列(7)-DBSession的封装

原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(7)-DBSession的封装 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇)   (1):框架搭建    (2):数据库访问层的设计Demo    (3):面向接口编程   (4 ):业务逻辑层的封装  (5):前台Jquery easyUI实现   (6):EF上下文实例管理 前言:上篇博客中我们重新对EF框架实现上下文进行了重新的操作,而且我们也建立了DbSession,使用CallContext