EntityFramework6.0读书笔记【一】-----序言

Entity Framework是微软战略性的数据访问技术,不同与早期访问技术,Entity Framework并不耦合在Visual Studio中,它提供了一个全面的, 基于模型的生态系统,使您能够开发包括桌面、互联网、云计算和基于服务的应用程序等

历史

EFVersion1 支持Database Frist

EFVersion4 支持Database Frist+Model First【along with full Plain Old CLR Object (POCO) support and
default lazy loading behavior】

EFVersion4.1一EFVersion4.3 支持Database Frist+Model First+Code Frist

EFVersion5  改进性能,支持枚举,表值函数、空间类型, 存储过程【此时只限于Database Frist】,与MVC框架的进一步结合。

EFVersion6 提供了异步的查询和更新,在CodeFrist中开始支持存储过程,提升性能以及引入一些新特性。

模型

使用EntityFramework创建一个模型,最显著的特点就是创建一个实体数据模型(Entity Data Model【EDM】),使用EDM可以自定义实体类和数据表之间的映射关系

Developer:只需要着眼于领域对象模型的开发【即可以直观描述具体问题信息的类】

DBA:更多的从性能,扩展性,易维护性和高度规范性去设计数据库。

例如:上图中的Employees, Devices, Phone信息存在三个不同的物理数据表中,这是从DBA的角度考虑的,但是存developer角度设计的时候,他会在Employee类中包含Devices, Phone的集合信息,同样的,DBA将与部门相关的所有信息全部放在一张Depeartment表中,而developer根据开发的关注的问题需求,将其细分为(会计,市场营销,金融等具体实体对象)。也就是说从不同的角度看问题,developer不会去关心DBA怎么设计数据表,DBA也不会去关心developer怎么设计实体类。他们可能同处在一个项目组中,可行其职,最优化的设计自己的方案而互不影响充分的解耦,而交互的工作就由EntityFramework进行处理了。

Entity Data Model 由概念层,存储层,映射层构成,每一层都是相互独立的。

其中实体类是包含在概念层【conceptual layer】中,而这一层也是开发人员最关心的。也可以利用EntityFramework自带的工具进行反向工程,即从已存在的数据库创建实体类,其所用的语法为概念架构定义语言【CSDL】。

实体数据模型的存储层定义表,列,关系和数据类型如何映射到底层数据库。其所用的语法为存储架构定义语言(SSDL).

映射层定义的概念和存储层之间的映射。除此之外,这层定义了如何从实体类的属性映射到列的数据库表中。这个层被暴露给开发者,developer可以利用EntityFramework设计映射详细信息的窗口或者数据注解的方式以及如果使用Code Frist方式时可利用Fluent API进行定义,其所用的语法为映射规范语言(MSL)

术语

EntityType代表域模型中的一个类。EntityType的一个实例是通常被称为一个实体。如果您使用的是EntityFramework的设计器,可以看到如上图所示的表示。EntityType通常有一个或多个属性。属性可以是简单的类型,如整型,字符串,等等;或者复杂类型;或者是集合。导航属性用于关联其他相关实体(通常通过外键关系数据库中的表示)。非导航属性被称为标量属性

两个实体之间的关系被称为关联。EntityTypes之间的关联显示在设计视图中是连接EntityTypes的一条线。

EntityType有一个属性或一组属性代表其的EntityKey属性。一个的EntityKey唯一标识该实体,它最常被映射到底层数据库的一个主键 。

context object 是获取EntityFramework服务的网关。管理数据库连接,生成参数化SQL,执行数据存取,缓存对象,跟踪和抽象数据转换为包含具体的参数类型的实体类。

DbContext 是对EntityFramework支持的ObjectContext的一种包装,因而更加直观,友好。

 怎么编码

1.EF/VS借力于T4模板自动生成代码

2.使用CodeFrist的模式手动编写独立于EntityFramework管道的POCO类【也可借助Entity Framework Power Tool反向生成】。

时间: 2025-01-14 14:49:50

EntityFramework6.0读书笔记【一】-----序言的相关文章

EntityFramework6.0读书笔记【二】-----实体数据模型基础【上】

序言 在这一篇中,我们将演示EnitityFramework基本的建模[建模也是EntityFramework最核心的特性]范例,例如实体的分离和继承等.我们开始了演示如何创建一个简单的概念模型的例子,然后让EnitityFramework建立底层数据库.在余下的例子中,我们将告诉你如何从现有的表和数据库关系创建模型. 创建一个简单的Model 1.点击添加新建项,选择Data下的ADO.NET实体模型,并选择空模型. 2.右键选择新增实体 3.将实体命名为Person,实体集命名为People

编写高质量的iOS代码--Effective Objective-C 2.0 读书笔记

编写高质量的iOS代码--Effective Objective-C 2.0 读书笔记 这本书年初刷完,感觉不错,介绍了很多小点,都是平日不怎么关注的. 第1章 熟悉Objective-C 这章没什么好介绍 第1条:了解Objective-C语言的起源 第2条:在类的头文件中尽量少引入其他头文件 第3条:多用字面量语法,少用与之等价的方法 第4条:多用类型常量,少用#define预处理指令 要理解为啥要少用#define预处理指令. 然后具体用哪个, 自己定吧 第5条:用枚举表示状态.选项.状态

DW2.0下一代数据仓库架构_第8章 数据模型和DW2.0(读书笔记)

智能线路图    数据模型是DW2.0必备组成部分.数据模型在很多方面都扮演着通往DW2.0其他部分的只能线路图的角色.在DW2.0中建立线路图有很多种原因,但最重要的原因是建立DW2.0并不是一蹴而就的,相反,每次建立一步,通过很长的时间完成,另外,它的建立是由很多人而不是单个人完成的.为了协调不同人员的工作以及适应不同类型的用户,非常有必要建立一个线路图--数据模型,数据模型描述了DW2.0各部分如何结合在一起.如果没有数据模型,DW2.0各部分的工作边被割裂开来,从而导致系统的混乱. 数据

《机器学习》读书笔记一序言部分

参考文档:http://www.a-site.cn/article/429982.html <陆汝铃:六问机器学习> 参考文献:<机器学习>---周志华 文章摘自<机器学习>序言部分 在人工智能发展早期,机器学习技术内涵几乎全部是符号学习,从二十世纪九十年代起,统计机器学习犹如一匹黑马横空出世,迅速压倒并取代了符号学习的地位.但这并不意味着符号学习完全被统计学习所取代,相反单纯的统计机器学习,在最近的发展历程中已经走到的尽头."三十年河东,三十年河西"

c#2.0锐利体验《泛型编程》读书笔记

1.c#泛型及机制 ? 1 2 3 4 5 6 Class Stack<T> { } T 其实为type的缩小,不过也可为其他字符代替T ,被称为"泛型类型"  T为晚绑定的,在编译的时候还不能确定T的确切类型. 2.泛型类型 3. c#2.0锐利体验<泛型编程>读书笔记,布布扣,bubuko.com

《资本论》读书笔记(0)为了弄清楚经济学规律

<资本论>读书笔记(0)为了弄清楚经济学规律 +BIT祝威+悄悄在此留下版了个权的信说: 写在前面 我正在读李睿编译武汉出版社出版的马克思著作<资本论>.拿起这样的巨著自然是逼不得已,因为我太想弄清楚经济学规律了.我在大学期间参加了工商管理双学位课程,其中关于经济学部分的学习让我觉得太胡扯.最近有时间研读<资本论>,就目前的感受来说,<资本论>的观点是以科学的态度研究得来的. 所以我打算边读边写一些笔记,主要是把资本论里严谨的研究过程和结论用不严谨但易于理解

Hadoop读书笔记(七)MapReduce 0.x版本API使用demo

Hadoop读书笔记(一)Hadoop介绍:http://blog.csdn.net/caicongyang/article/details/39898629 Hadoop读书笔记(二)HDFS的shell操作:http://blog.csdn.net/caicongyang/article/details/41253927 Hadoop读书笔记(三)Java API操作HDFS:http://blog.csdn.net/caicongyang/article/details/41290955

【未完成】《统计机器翻译》读书笔记:系列0,全书概述与个人总结

说明:本系列文章是本人在阅读统计机器翻译后所做的个人读书笔记,会按照每一章的顺序来按章详细叙述内容总结和习题解答. 系列0:全书概述与个人总结 本书是大牛Philipp Koehn的作品,他是开源项目Moses项目的领导者,具体可以去www.statmt.org/moses/查看,我也会在未来的半个月写一些有关Moses学习的博文. 本书分为三个部分:基础知识(介绍机器翻译需要语言学的基础.概率论的基础).核心方法(基于词的翻译模型.基于短语的翻译模型.解码decoding).前沿研究 在绪论部

驱动开发读书笔记. 0.02 基于EASYARM-IMX283 烧写uboot和linux系统

驱动开发读书笔记. 0.02 基于EASYARM-IMX283 怎么烧写自己裁剪的linux内核?(非所有arm9通用) 手上有一块tq2440,但是不知道什么原因,没有办法烧boot进norflash或者nandflash:只好用另一块arm9(i.mx283a)来继续学习: 从开发教程上面可知,烧写uboot和Linux是通过各种批处理脚本和exe程序来执行的,称之为固件烧写,然而并没有需要我们选择uboot路径.Linux内核和文件系统的地方.这样的话是不是意味着只能烧写官方默认提供的文件