EntityFramework——Map之初露锋芒(一)

一、什么是ORM

1、含义

对象关系映射(Object Relational Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。从效果上说,它其实是创建了一个可在编程语言里使用的“虚拟对象数据库”。

简单的说:ORM相当于中继数据,对象-关系映射(ORM)系统一般以中间件的形式存在,主要实现程序对象到关系数据库数据的映射。

对象关系映射(ORM)提供了概念性的、易于理解的模型化数据的方法。

2、原则

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

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

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

典型地,建模者通过收集来自那些熟悉应用程序但不熟练的数据建模者的人的信息开发信息模型。建模者必须能够用非技术企业专家可以理解的术语在概念层次上与数据结构进行通讯。建模者也必须能以简单的单元分析信息,对样本数据进行处理。ORM专门被设计为改进这种联系。

3、映射模式

(1)数据类型映射模式

(2)类映射模型

(3)关联映射模式

(4)引用映射模式

二、什么是EF

1、含义

Entity Framework 是 ADO.NET 中的一组支持开发面向数据的软件应用程序的技术。是微软的一个ORM框架。

Entity Framework使用这些模型和映射文件将对概念模型中的实体和关系的创建、读取、更新和删除操作转换为数据源中的等效操作。

Entity Framework甚至支持将概念模型中的实体映射到数据源中的存储过程。

2、内容

(1)概念架构定义语言文件 (.csdl)

概念层结构定义了对象模型 (Object Model),让上层的应用程序码可以如面向对象的方式般访问数据,概念层结构是由 CSDL (Conceptual Schema Definition Language) 所撰写

(2)存储架构定义语言文件 (.ssdl) -- 定义存储模型(又称逻辑模型)

储存层结构是负责与数据库管理系统 (DBMS) 中的数据表做实体对应 (Physical Mapping),让数据可以输入正确的数据来源中,或者由正确的数据来源取出。它是由 SSDL (Storage Schema Definition Language) 所撰写

(3)映射规范语言文件 (.msl) -- 定义存储模型与概念模型之间的映射。

对应层结构负责将上层的概念层结构以及下层的储存体结构中的成员结合在一起,以确认数据的来源与流向。对应层结构是由 MSL (Mapping Specification Language) 所撰写

3、查询方式

(1)LINQ to Entities -- 提供语言集成查询 (LINQ) 支持用于查询在概念模型中定

义的实体类型。

(2)Entity SQL -- 与存储无关的 SQL 方言,直接使用概念模型中的实体并支持诸

如继承和关系等 EDM 功能。

(3)查询生成器方法 --可以使用 LINQ 风格的查询方法构造 Entity SQL 查询。

4、查询的架构图

5、优点

(1)应用程序可以通过更改以应用程序为中心的概念性模型(包括具有继承性、复杂成员和关系的类型)来工作。

(2)应用程序不再对特定的数据引擎或存储架构具有硬编码依赖性。

(3)可以在不更改应用程序代码的情况下更改概念性模型与特定于存储的架构之间的映射。

(4)开发人员可以使用可映射到各种存储架构(可能在不同的数据库管理系统中实现)的一致的应用程序对象模型。

(5)多个概念性模型可以映射到同一个存储架构。

(6)语言集成查询支持可为查询提供针对概念性模型的编译时语法验证。

 小编寄语:在这里只是粗略的介绍了一下EF的基本知识,至于它如何创建这里就不在细说(网上的方法很全)。总的来说,EF作为一种ORM框架,给我们带来了很大的方便,使我们不仅可以解决的业务问题的实体、关系和逻辑构建模型,还可以处理用于存储和检索数据的数据引擎。可以让数据可能跨多个各有不同协议的存储系统;也可以使单个存储系统的应用程序在存储系统的要求与编写高效,并且从容易维护的应用程序代码之间取得平衡。之后我们还会继续学习关于ORM的应用,希望对大家有所帮助。

时间: 02-25

EntityFramework——Map之初露锋芒(一)的相关文章

当EntityFramework爱上AutoMapper

有时候相识即是一种缘分,相爱也不需要太多的理由,一个眼神足矣,当EntityFramework遇上AutoMapper,就是如此,恋爱虽易,相处不易. 在DDD(领域驱动设计)中,使用AutoMapper一般场景是(Domain Layer)领域层与Presentation Layer(表现层)之间数据对象的转换,也就是DTO与Domin Model之间的相互转换,但是如果对AutoMapper有深入了解之后,就会发现她所涉及的领域不仅仅局限如此,应该包含所有对象之间的转换.另一边,当Entit

关于EntityFramework 7 开发学习

Entity Framework (又称ADO.NET Entity Framework) 是微软以 ADO.NET 为基础所发展出来的对象关系对应 (O/R Mapping) 解决方案,早期被称为 ObjectSpace,现已经包含在 Visual Studio 2008 Service Pack 1 以及 .NET Framework 3.5 Service Pack 1 中发表. ADO.NET Entity Framework 以 Entity Data Model (EDM) 为主,将

利用Bootstrap+Avalonjs+EntityFramework 开发ASP.NET WebForm应用程序(上)

本文将介绍如何利用Bootstrap+Avalonjs+EntityFramework 开发ASP.NET WebForm应用程序,分为上下两篇.上篇主要介绍实现,下篇主要介绍界面. 打开Visual Studio Web Express2013新建一个空白应用程序 ContactSample--联系人示例 (1)数据库 引入界面文件BootStrap,JS文件jquery和avalon,建立联系人页面Contact.aspx. 打开数据库,设计数据库ContactSample,数据库比较简单,

ABP示例程序-使用AngularJs,ASP.NET MVC,Web API和EntityFramework创建N层的单页面Web应用

本片文章翻译自ABP在CodeProject上的一个简单示例程序,网站上的程序是用ABP之前的版本创建的,模板创建界面及工程文档有所改变,本文基于最新的模板创建.通过这个简单的示例可以对ABP有个更深入的了解,每个工程里应该写什么样的代码,代码如何组织以及ABP是如何在工程中发挥作用的. 源文档地址:https://www.codeproject.com/Articles/791740/Using-AngularJs-ASP-NET-MVC-Web-API-and-EntityFram 源码可以

EntityFramework Core解决并发详解

话题(EntityFramework Core并发) 对于并发问题这个话题相信大家并不陌生,当数据量比较大时这个时候我们就需要考虑并发,对于并发涉及到的内容也比较多,在EF Core中我们将并发分为几个小节来陈述,让大家看起来也不太累,也容易接受,我们由浅入深.首先我们看下给出的Blog实体类.     public class Blog : IEntityBase     {        public int Id { get; set; }        public string Nam

EntityFramework Code-First 简易教程(二)-------Code First约定

Code First 约定 在前一篇中,我们已经知道了EF Code-First怎样从模型类(domain classes)中创建数据库表,下面,我们开始学习默认的Code-First约定. 什么是约定? 约定就是在Code-First模式中自动配置模型类的默认规则,Code-First约定定义在System.Data.Entity.ModelConfiguration.Conventions 命名空间 让我们来看看各种约定的概述 类型发现(Type Discovery): 在前一篇中,我们创建

DTO学习系列之AutoMapper(五)----当EntityFramework爱上AutoMapper

有时候相识即是一种缘分,相爱也不需要太多的理由,一个眼神足矣,当EntityFramework遇上AutoMapper,就是如此,恋爱虽易,相处不易. 在DDD(领域驱动设计)中,使用AutoMapper一般场景是(Domain Layer)领域层与Presentation Layer(表现层)之间数据对象的转换,也就是DTO与Domin Model之间的相互转换,但是如果对AutoMapper有深入了解之后,就会发现她所涉及的领域不仅仅局限如此,应该包含所有对象之间的转换.另一边,当Entit

死去活来,而不变质:Domain Model(领域模型) 和 EntityFramework 如何正确进行对象关系映射?

写在前面 阅读目录: 设计误区 数据库已死 枚举映射 关联映射 后记 在上一篇<一缕阳光:DDD(领域驱动设计)应对具体业务场景,如何聚焦 Domain Model(领域模型)?>博文中,探讨的是如何聚焦领域模型(抛开一些干扰因素,才能把精力集中在领域模型的设计上)?需要注意的是,上一篇我讲的并不是如何设计领域模型(本篇也是)?而是如何聚焦领域模型,领域模型的设计是个迭代过程,不能一概而论,还在路上. 当有一个简单的领域模型用例,完成一个从上而下过程的时候,就需要对领域模型和数据库进行对象关系

EntityFramework之使用Code First创建数据及基本操作(一)

那时学EF的时候还没有Code First,只有DB First,生成的是一个EDMX文件,Code First则没有这文件,下面直接上代码吧 数据库创建以及建表 1.首先我们新建一个新项目,使用Nuget搜索EntityFramework,如果想找到对应的中文包,可以搜索EntityFramework.zh-Hans即可. 本人是话是直接搜索EntityFramework.zh-Hans,这样会自动把中文包和类库一起安装,比较方便. 2.接着建model实体 1 public class Pr