ORM工具

来源 :电脑知识与技术 | 被引量 : 0次 | 上传用户:qinghuawuqiong
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:该文主要研究了微软的Entity Framework是如何工作的,以及Entity Framework实现的三种方法,并且为不同的场景该如何选择哪种方法做了一些讨论。还论述了LINQ to Entities如何查询实体数据模型和Entity SQL如何去查询实体数据模型。
  关键词:ORM 实体对象;数据模型;Entity Framework
  中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2016)10-0013-02
  1 概述
  Entity Framework是微软公司开发的对象关系映射工具(Object Relational Mapper简称ORM),他实现业务模型和关系型数据之间的相互映射。开发人员基本可以在不使用底层代码的情况下实现数据访问(data access)。Entity Framework给开发人员提供了一套易于理解的基于模型的系统,它可以将开发人员从编写数据访问层和域模型相同的代码的工作中解脱出来。Entity Framework的最初是随着.NET Framework 3.5 SP1和Visual Studio 2008 SP1一起发布的,名称为Entity Framework 3.5,目前的最新版本是Entity Framework 7。
  Entity Framework可以非常容易的将概念模型的实体和关系生成数据访问层。应用程序可以非常容易的执行CRUD(create,read,update,delete)操作,以及实体间的一对一、一对多和多对多的关系。Entity Framework还有很多好处,比如:可以比ADO.NET进行数据访问更加快捷,可以通过高级程序语言(C#等)来编写数据访问逻辑等。Entity Framework与数据库的访问最终还是通过ADO.NET来完成的。
  2 理解实体对象模型
  概念数据模型是Entity Framework的关键。为了使用Entity Framework,我们必须创建概念数据模型实体对象模型(Entity Data Model,简称EDM)。EDM定义了模型类、类和类之间的关系以及模型和数据库图表的映射。
  EDM一旦被创建,就可以执行对概念模型执行CRUD的操作,该操作将对象查询装换为数据库查询。查询后的结果将通过Entity Framework再一次装换为概念模型。Entity Framework将实体对象查询和数据库查询的转换关系,关系型数据和概念模型的映射关系存储在EDM中。
  3 理解ObjectContext类
  EDM被准备后,我们可以对对象模型执行CRUD操作。这种操作需要使用ObjectContext类。ObjectContext类是Entity Framework的主要对象。ObjectContext负责管理在EDM中的实体。这个类主要负责:1)管理数据库的连接;2)对CRUD操作提供支持;3)跟踪对象模型使其更新到数据库,ObjectContext类中的SaveChanges方法可以将新的或者改变的对象保存到数据库。
  还有另外一个类名为DbContext非常类似于ObjectContext类。DbContext类只是对ObjectContext类的一个包裹器。ObjectContext不是最新的类,DbContext类对于数据库连接的管理和执行CRUD操作都是较好的API。
  4 Entity Framework的开发风格
  一些项目的开发都是分为数据库和应用程序两个开发部分,通常首先设计数据库,完成后才开始应用程序的开发。但是根据需求分析的要求,应用程序的开发通常都是要求首先建立概念域模型,数据库的表的建立是通过概念域模型来建立的,最后应用程序将实现响应的业务逻辑。还有一种可能性是,创建的应用程序是高度以领域为中心,域模型通过类来实现,数据库只是用来维持这些模型的关系。
  Entity Framework提供了对以上场景的不同的支持。可以将其分为三种不同的方法。1)数据库优先(DataBase First);2)代码优先(Code First);3)模型优先(Model First)。应该根据具体开发场景的分析,权衡选择哪一种方法。
  4.1 数据库优先
  数据库优先的方法,主要好处是一旦数据库被创建好了,开发人员将花比较少的时间来编写数据访问层。EDM能够从数据库来创建,并且可以根据程序的需要来改变。满足的使用数据库优先的条件有:1)数据库已经创建完成了,或者在已有的数据上进行开发;2)应用程序是以数据为中心的,应用程序的改变是否基于数据库频繁的改变而改变。
  4.2 代码优先
  代码优先的方法通常被用于业务逻辑类已经被建立好了,数据库只是简单的被用来提供数据持久的作用。满足的使用代码优先的条件有:1)模型类已经创建好了,只是想通过数据库来进行数据的持久化;2)需要完成模型类之后才考虑是否需要将数据存储到数据库;3)开发人员不喜欢生成类而更加偏爱编写类。
  4.3 模型优先
  模型优先的方法,可以创建概念模型来创建数据库,之所以使用这种方法的原因是:在Visual Studio中使用模型优先的方式可以通过Visual Entity Designer来进行EDM的创建。
  5 通过LINQ to Entities查询实体数据模型
  LINQ(Language-Integrated Query)是.NET Framework中的数据查询技术。LINQ to Entities是对应用程序使用LINQ去指定需要获得的数据的实体对象模型作了一个良好的抽象,LINQ to Entities提供者负责处理访问数据库和为应用程序获取需要的数据。当应用程序使用LINQ to Entities去执行LINQ查询实体数据模型,LINQ首先在编译时决定需要获取哪些数据,然后,它将被执行,结果返回为CLR对象。然而,如果想理解整个过程,关键是理解被执行的查询和获取.NET对象的结果。   大体的查询过程是:应用程序创建LINQ查询;LINQ to Entities依赖能够工作在Entity Framework概念对象模型的EntityClient,使用Entity Framework的对象实体模型将EntityClient命令转换为SQL查询;SQL查询通过ADO.NET被传递到数据库;在数据库中执行查询;查询结果返回到Entity Framework;Entity Framework将结果转换为CLR类型域实体;EntitiyClient将使用投影将需要的结果返回给应用程序。
  6 通过Entity SQL查询对象模型
  Entity SQL(ESQL)提供了类似于SQL的语法,可以去编写针对模型类而不是针对数据表的查询。虽然,当涉及实体数据模型的查询时ESQL是一个很少使用技术,但是,当涉及对数据模型执行动态查询时它却十分有用。另一个使用ESQL的好处是开发人员只需要知道实体数据模型的架构,而不需要知道数据库的架构。如果开发人员比较熟悉SQL语言,那么使用ESQL将是十分容易的事情。
  如果开发人员使用ObjectQuery去编写ESQL,查询将被执行在对象层,也就是ESQL将获得实体模型。相比之下,如果开发人员使用EntityCommand去编写ESQL,查询将执行EntityClient,会获得只读的数据行集合。
  7 总结
  本文讨论了ORM和通过ORM轻松地完成数据访问代码。并讨论了Entity Framework是如何工作的,以及Entity Framework实现的三种方法,并且为不同的场景该如何选择哪种方法做了一些讨论。还阐述了LINQ to Entities如何查询实体数据模型和Entity SQL如何去查询实体数据模型。还了解了Entity SQL在ObjectQuery和EntityCommand两种情况下获得数据的方式。本文只是对Entity Framework常用特性作了概述,由于篇幅所限,没有对Entity Framework进行代码举例,还有一些高级特性,诸如并发管理和事务管理等知识未涉及到。既是对知识的拾遗也为抛砖引玉之用。
  参考文献:
  [1] 百度百科.Entity Framework [EB/OL].http://baike.baidu.com/link?url=bEeKvfk_9KDdiPnZkjAHQlrkRKa6ls_fzakDi-Gqbs _HLddRw9GoSypehKGoSypehKNP2sGzRqjWetV3Mr W2K.
  [2] 詹姆斯. ADO.NET 3.5高级编程:应用LINQ
其他文献
摘要;广播电台行业内,作为节目传输重要部门,随着业务量逐年增加,制作下发调度令次数工作量剧增,调度令管理系统研发设计,简化工作流程,减少人员工作量,缩短办公时间,节约资源,推动广播电台电台信息化建设。  关键词:调度令系统;Java语言;Web实现技术  中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2017)07-0234-02  随着网络信息化高速发展的今天,无论是人们
摘要;随着互联网和电脑的普及,我们的生活也随着电子商务的变化而变化,变得更加便捷和高效,但是,这些变化更多在城市里发生,大多数电子商务公司和网络公司更多聚焦于城市市场的服务。随着农村经济持续稳定发展,国家也开始重视农村网络配送的发展并扶持,农村网络配送体系也将慢慢建设起来,网络的覆盖是一个开始。基于黔东南州农村网络配送发展的现状,本文提出了电子商务物流配送存在的问题和农村网络配送体系的建設对策,为
摘要:每一次媒介的突破,对艺术的美术追求都是一次冲击。数字媒体的高速发展,新兴的技术和手段为传统的水彩美学提供了技术变革的可能;同时“数字水彩”也作为新兴的艺术形式发展、壮大起来并广泛应用于艺术设计。如何利用数字媒体先进技术去突破传统的水彩,在新的视域下追求水彩艺术?该文从数字媒体与传统水彩、数字水彩的相互影响和关系入手,探讨新技术对传统水彩变革的影响和新兴数字水彩的美术追求。  关键词:数字媒体
摘要:“以赛促学、以赛促教、发赛促训”的教学模式进行研究与探索《计算机硬件检测与数据恢复》项目对学生职业能力和职业素质培养的途径,全方面提高学生职业素养。  关键词:技能大赛;职业能力;职业素养  中图分类号:G424 文献标识码:A 文章编号:1009-3044(2017)25-0083-01  “普通教育有高考,职业教育有技能大赛”的提出,是职业类学校学生的另一种高考,技能大赛在职业类学校很受
摘要:信息时代的到来,给传统展项设计带来了极大的冲击与挑战。随着展项设计理念的不断升级,各种先进技术被广泛应用到展项设计过程中,促进了展项设计的创新发展。智慧型创新展项设计理念的提出,可以说是传统展项设计的全新蜕变,借助高科技手段,给参展者带来了全新的体验。该文以奥迪智慧展馆为例,介绍了智慧型创新展项设计的具体应用。希望通过该文的分析与研究,可以帮助读者更好地了解创新型展项设计内容,并能够取得良好
摘要:社会信息化的不断完善发展,使我们日常生活和工作各个方面都因为Internet技术及其应用的迅猛发展而产生了巨大的变化,日常办公中对于各种信息化应用系统的使用也变得更加普遍。其中,OA系统对实现公司人员的有效管理,及时、流畅的通知与传达,创造一个运转良好的内部沟通与协调机制的重要性是显而易见的。对办公人员来讲,能够随时随地用任何浏览工具都可以畅快自由地在网上进行办公是可以大大提高工作效率的。因
摘要:在“大众创业,万众创新”的社会背景下,各地高校都在倡导大学生创新创业教育。笔者通过多种调查方式,了解到九江学院大学生对创新创业教育的认识和当前创新创业教育的现状,由点及面,找出当前大学生创业教育存在的问题,并对此提出了相应的建议。  关键词:大学生创新创业教育;创业教育现状;问卷调查  中图分类号:G424 文献标识码:A 文章编号:1009-3044(2016)01-0183-02  Th
摘要:近些年来,随着信息全球化和经济一体化的到来,使得我国的贸易类企业的信息化需求也日益突出。但是就目前的情况来看,我国的贸易类企业信息化建设缓慢,仍然处于初级阶段,还有很长的路要走,而相较而言我国的中小型贸易类企业的信息化建设则更为迟缓。该文从中小型企业和企业信息化建设的概述、当前中小型贸易类企业信息化建设存在的问题以及解决对策这三大方面来进行论述,旨在希望能够积极有效的推进我国中小型贸易类企业
摘要:随着微课程在各学科教学工作中发挥重要作用,以C语言程序设计为基础的大学计算机课程也应投身到教学变革的大潮中。大部分高校学生在初次系统学习C语言的过程中会遭遇较多的困难,对他们学习C语言的热情和实际效果造成很大影响。该文分析了微课程变革对C语言程序设计教学的重要意义,并系统探讨了微课程的应用原则以及构建高效C语言微课程教学的具体思路。  关键词:C语言;微课程;视频;反馈  中图分类号:G64
摘要:Scratch是一款面向对象的“可视化”编程语言,“积木组合式”的编程操作模式为广大青少年所喜爱。Scratch在短短的十多年间就风靡全球,其将枯燥的编程变为活泼地“玩”和轻松地“学”,既满足了儿童对外界的好奇心,也对培养学生创新能力很有帮助。Scratch承载的理念很好,但真正要成为培养学生创新能力、提升创造水平的载体,还应在优化Scratch教学策略上下文章。该文通过让“玩家”兴致勃勃地