微软官方提供的ORM技术的实现就是EF(Entity Framework)框架。EF的模式有三种分别是:Database First  数据库先行 ,Model First 模型先行 , Code First 代码先行 , 最后介绍的就是POCO 它的全称:Plain Old CLR Object,简单传统的公共语言运行时对象。

  这里简单介绍一下 Code First 模式:Code First是指“代码优先”或“代码先行”。这种方式在上下文设计模式中非常有用。使用Code First模式,可以专注于数据上下文的设计,根据需要,为一个数据上下文的对象创建类集合,而不是首先来设计数据库,然后来根据数据库设计实体类,Code-First 模式将会基于编写的类和配置,自动创建模型和数据库。

  Code First模式的核心是,我们只需要编写代码,来自动创建数据模型和数据库,模型和数据库直接通过C#类来定义,而并不使用基于XML的edmx文件。如果采用Database First模式生成代码,需要使用EF设计器辅助工具,而使用Code First可以直接通过使用最简单的类来定义模型。

  三种模式如图:

        

  ORM的全称为“对象关系映射”(Object Relational Mapping)。ORM是随着面向对象的软件开发方法发展而产生的。用来把对象模型表示的对象映射到基于SQL的关系模型数据库结构中去。这样,我们在具体的操作实体对象的时候,就不需要再去和复杂的SQL语句打交道,只需简单的操作实体对象的属性和方法。ORM技术是在对象和关系之间搭建了一条桥梁,前台的对象型数据和数据库中的关系型的数据通过这个桥梁来相互转化。

  ORM方法论基于的三个核心原则:

  1.简单:以最基本的形式建模数据。
  2.传达性:数据库结构被任何人都能理解的语言文档化。
  3.精确性:基于数据模型创建正确标准化的结构。

  ORM技术简单示意图

            

  ORM的优点:ORM通过关系数据和对象之间的映射,自动生成SQL语句,将程序员从繁琐的数据库操作代码中解脱出来,将精力放在对具体业务逻辑上。只需编写一次代码,做较少的修改,就能适应其他类型的数据库。

  由于ORM技术在极大程度上提升了开发效率,因此众多厂商和开源社区都提供了对ORM的实现。微软官方提供的ORM技术的实现就是EF(Entity Framework)框架。这套框架是基于ADO.NET的ORM框架。

  EF框架的主要特点:支持多种数据源,支持存储过程的映射,提供Visual Studio集成工具,执行可视化操作。

    1.这套框架是基于ADO.NET的ORM框架。

    2.ORM用来把对象模型表示的对象映射到基于SQL的关系模型数据库结构中去。

    3.ORM技术是在对象和关系之间提供了一条桥梁,前台的对象型数据和数据库中的关系型的数据通过这个桥梁来相互转化。

    4.ORM方法论基于三个核心原则。

      简单:以最基本的形式建模数据。

      传达性:数据库结构被任何人都能理解的语言文档化。

      精确性:基于数据模型创建正确标准化的结构。

    5.ORM的具体含义是:O对应程序中的实体类;R对应数据库中的关系表;M表示程序中的对象和数据库中关系表数据的映射关系。

  最后就是EF框架支持“Database First”、“Model First”和“Code First”三种方式来完成数据建模。Database First模式称为“数据库优先”或“数据库先行”模式,即先创建数据库,后生成数据模型。在这种模式下,要求数据库已经创建完成并可以正常使用,然后使用Visual Studio中的EF模型设计器,根据已有的数据库生成数据模型。

Entity Framework 框架的更多相关文章

  1. Entity Framework框架 (一)

    1. Entity Framework的详细介绍: Entity Framework简称EF,与Asp.net关系与Ado.net关系. Entity Framework是ado.net中的一组支持开 ...

  2. 深入了解Entity Framework框架及访问数据的几种方式

    一.前言 1.Entity Framework概要 Entity Framework是微软以ADO.NET为基础所发展出来的对象关系映射(O/R Mapping)解决方案.该框架曾经为.NET Fra ...

  3. Entity Framework框架 (二)

    一.前面一篇EF的介绍主要是通过linq语句,本篇主要是介绍一下不通过linq语句如何去操作EF执行查询sql语句与执行存储过程. 1.  其中的Acccout是输出参数对应的类.比如输出参数有三个值 ...

  4. Entity Framework 实体框架的形成之旅--数据传输模型DTO和实体模型Entity的分离与联合

    在使用Entity Framework 实体框架的时候,我们大多数时候操作的都是实体模型Entity,这个和数据库操作上下文结合,可以利用LINQ等各种方便手段,实现起来非常方便,一切看起来很美好.但 ...

  5. Entity Framework实体框架使用TrackerEnabledDbContext进行操作日志跟踪

    在EF实体框架中进行日志跟踪,一般都是自己写个Log实体类,在数据保存时进行属性原始值验证来进行日志跟踪.当然还可以使用一些第三扩展库例如:entity framework extended进行日志记 ...

  6. 开发 ASP.NET vNext 续篇:云优化的概念、Entity Framework 7.0、简单吞吐量压力测试

    继续上一篇<开发 ASP.NET vNext 初步总结(使用Visual Studio 2014 CTP1)>之后, 关于云优化和版本控制: 我本想做一下MAC和LINUX的self-ho ...

  7. 分享关于Entity Framework 进行CRUD操作实验的结果

    我们在使用Entity Framework框架进行CRUD时,经常会出现各种各样的错误,下面请看我的实验结果. 以下是只用一个上下文对象进行操作: 第一次: BlogDbContext blog = ...

  8. Entity Framework 之三层架构

    今天,我们谈一下如何用Entity Framework构建一个三层架构.即包括DAL层,BLL层和MODEL层.我们先看一下目录结构,如下图: 目录中,我们有Web层,AVON.DMS.Model是实 ...

  9. Entity Framework基金会

    概要 Entity Framework缩写EF,微软ORM产品. 本篇博客将简单的介绍它,至于它的详细深层次的使用,大家能够查询对应的操作手冊,该篇不过入门. Entity Framework和Lin ...

随机推荐

  1. Jmeter之Non HTTP response code: java.net.SocketException/Non HTTP response message: Permission denied: connect

    最近在做性能测试过程中遇到了高并发时,后台监控各项指标都很正常,但是测试结果中很多Non HTTP response code: java.net.SocketException/Non HTTP r ...

  2. vue项目实践-前后端分离关于权限的思路

    前后端分离后权限的思路 最近看到许多关于权限的思路,但好像都是使用动态加载路由的方式,现在也分享下我在项目中使用的解决方案. 前后端分离关于权限的处理每个人都不一样,根据项目选择制定合适的方案就好 我 ...

  3. 利用 python 实现对web服务器的目录探测

    一.pythonPython是一种解释型.面向对象.动态数据类型的高级程序设计语言.python 是一门简单易学的语言,并且功能强大也很灵活,在渗透测试中的应用广泛,让我们一起打造属于自己的渗透测试工 ...

  4. Python学到什么程度就可以去找工作?掌握这4点足够了!

    大家在学习Python的时候,有人会问“Python要学到什么程度才能出去找工作”,对于在Python培训机构学习Python的同学来说这都不是问题,因为按照Python课程大纲来,一般都不会有什么问 ...

  5. [Swift]LeetCode154. 寻找旋转排序数组中的最小值 II | Find Minimum in Rotated Sorted Array II

    Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand. (i.e. ...

  6. [Swift]LeetCode235. 二叉搜索树的最近公共祖先 | Lowest Common Ancestor of a Binary Search Tree

    Given a binary search tree (BST), find the lowest common ancestor (LCA) of two given nodes in the BS ...

  7. [Swift]LeetCode986. 区间列表的交集 | Interval List Intersections

    Given two lists of closed intervals, each list of intervals is pairwise disjoint and in sorted order ...

  8. Python档案袋( Socket 与 ScoketServer 通信 )

    Socket有一个缓冲区,缓冲区是一个流,先进先出,发送和取出的可自定义大小的,如果取出的数据未取完缓冲区,则可能存在数据怠慢.其中[recv(1024)]表示从缓冲区里取最大为1024个字节,但实际 ...

  9. scala的input

    获取用户输入的信息,一般使用 input 函数,但是 scala 里面是没有 input 这个方法的,为了获取控制台的输入操作, scala 定义的方法为: val Inputcontent = Co ...

  10. WebSocket(5)---多人聊天系统

    多人聊天系统 功能说明:多人聊天系统,主要功能点: 1.当你登陆成功后,可以看到所有在线用户(实际开发可以通过redis实现,我这边仅仅用map集合) 2.实现群聊功能,我发送消息,大家都可以看到. ...