编辑推荐

EntityFramework是微软.NET平台支持的对象关联映射技术,如今已发展得相当成熟,能够轻松支持大型系统开发,开发人员可以通过实体数据模型对象与数据库进行沟通,建立更坚固的商业应用程序系统,避免因为通过ADO.NET
直接处理SQL语句伴随的风险与可能产生的错误。
《EntityFramework实用精要》带领读者进入EntityFramework的世界,建立必要的技术能力,同时希望读者在完成书本的学习之后,能够更进一步地将其运用在实际项目开发中。

内容简介

EntityFramework是微软公司.NET平台支持的对象关联映射技术,开发人员可以通过实体数据模型对象与数据库进行沟通,建立更坚固的商业应用程序系统,避免因为通过ADO.NET直接处理SQL语句而带来的风险与可能引发的错误。《Entity Framework 实用精要》通过介绍EntityFramework与LINQ开发实战的案例,以EntityFramework技术内容的讨论为主线,结合关键的LINQ技巧说明,提供读者系统性学习EntityFramework所需的内容。
《EntityFramework实用精要》旨在帮助读者进入EntityFramework的世界,建立必要的技术能力,同时希望读者在完成《Entity Framework 实用精要》的教学课程之后,能够更进一步地将其运用在实际的项目开发中。

作者简介

吕高旭,台湾康廷数字创始人,专注程序语言与各种应用开发方法的教学,包括实体纸本图书出版与在线课程服务。

目录

第1章EntityFramework概观1
1.1初探EntityFramework1
1.2EntityFramework与ADO.NET9
1.3对象关联映射——ORM13
1.4EntityFramework开发流程14
1.5空EF设计器模型16
1.6使用CodeFirst27
1.6.1来自数据库的CodeFirst27
1.6.2空CodeFirst模型31
1.7小结34
第2章实体数据模型35
2.1实体数据模型概观35
2.2模型工具与.edmx文件36
2.2.1概念模型39
2.2.2存储模型42
2.2.3映射42
2.3实体数据模型与类文件44
2.4POCO与实体数据模型46
2.5实体类结构映射53
2.5.1数据注解属性54
2.5.2FluentAPI61
2.6EFDesigner数据库更新65
2.7CodeFirst数据库迁移71
2.7.1结构变动迁移76
2.7.2查看SQL78
2.7.3指定迁移79
2.8关于DbContext79
2.8.1传送SQL语句与数据转换80
2.8.2查询与连接议题81
2.8.3管理更新操作82
2.8.4DbContext对象生命期83
2.8.5覆写OnModelCreating方法83
2.8.6管理与操作数据库——Database属性83
2.8.7ObjectContext85
2.9DbSet87
2.10追踪本地数据集91
2.11小结94
第3章实体数据模型与LINQ95
3.1LINQ与EntityFramework95
3.2Select——选择与投影99
3.2.1类型转换100
3.2.2多重from与SelectMany103
3.3Where与数据筛选107
3.4排序113
3.5分组116
3.6转换122
3.6.1AsEnumerable122
3.6.2Array与List125
3.6.3ToDictionary128
3.6.4ToLookup131
3.7异步查询134
3.8关联——Join136
3.8.1GroupJoin139
3.8.2Innerjoin与LeftOuterJoin141
3.8.3EntityFramework与Join142
3.9LINQ、SQL与EntitySQL146
3.9.1关于SQL语句147
3.9.2EntitySQL147
3.9.3EntitySQL参数149
3.10小结150

第4章EntityFramework与扩充方法151
4.1Enumerable扩充方法151
4.2聚合运算152
4.2.1计算平均值153
4.2.2Average方法与Func155
4.2.3聚合函数158
4.3设置操作160
4.4产生操作164
4.4.1Empty与DefaultIfEmpty164
4.4.2Range166
4.4.3Repeat167
4.5计数运算169
4.5.1All169
4.5.2Any171
4.5.3Contains172
4.6分割运算173
4.6.1Skip与SkipWhile174
4.6.2Take与TakeWhile176
4.7元素操作178
4.7.1First与FirstOrDefault178
4.7.2Last与LastOrDefault180
4.7.3ElementAt与ElementAtOrDefault182
4.7.4Single与SingleOrDefault183
4.8扩展方法的异步版本185
4.9小结186
第5章数据关联与继承187
5.1与关联数据互动187
5.2CodeFrist与关联设计194
5.2.1CodeFirst关联设置惯例196
5.2.2数据注解200
5.3处理特定关联定义203
5.3.1一对一(1to0..1)203
5.3.2多对多(*to*)208
5.3.3多对多关联——附加数据字段213
5.4使用CodeFirst设计关联216
5.5LazyLoading与EagerLoading223
5.5.1调整virtual属性229
5.5.2Include方法与对象加载231
5.5.3Include方法与异步数据加载234
5.6继承235
5.6.1TablePerHierarchy(TPH)235
5.6.2TablePerType(TPT)241
5.6.3TablePerConcreteClass(TPC)244
5.7复杂类型248
5.8小结251
第6章数据编辑与维护252
6.1数据编辑操作252
6.1.1实体数据对象状态255
6.1.2更新与删除256
6.1.3Attach259
6.1.4变更追踪——DbContext.ChangeTracker263
6.1.5更新验证异常——DbEntityValidationException268
6.1.6DbContext.ValidateEntity方法271
6.1.7覆写SaveChange272
6.1.8异步的变更更新274
6.2SQL语句275
6.2.1使用参数279
6.2.2执行非查询变更指令——ExecuteSqlCommand280
6.3存储过程281
6.3.1直接调用存储过程288
6.3.2获取返回值289
6.3.3CodeFirst自动设置存储过程290
6.4数据变更冲突294
6.4.1并发冲突处理——DatabaseWins或ClientWins298
6.4.2SQL语句与数据冲突300
6.4.3存储过程与数据冲突300
6.4.4ConcurrencyCheck注解302
6.5事务处理304
6.5.1共享事务处理连接305
6.5.2使用TransactionScope305
6.6复杂类型的数据对象变更308
6.7小结310
第7章ASP.NET整合应用311
7.1WebForms与EntityFramework311
7.1.1查询314
7.1.2更新315
7.1.3删除316
7.1.4处理单项数据316
7.1.5关联设计319
7.2MVC与EntityFramework321
7.2.1查询325
7.2.2更新/删除326
7.2.3添加330
7.2.4关系型数据332
7.3WCF服务与实体数据模型335
7.3.1WCF应用程序项目335
7.3.2数据合约339
7.3.3整合EntityFramework340
7.4小结346


前言/序言

前言

程序设计师编写网页商业应用程序时离不开对数据库的运用,基本可以认为,不懂得运用数据库的网页应用程序设计师只是完成了网页美工设计师“委托的”工作。因为几乎所有的商业化网页用程序都要在后台连接与访问数据库。
然而,没有面向对象的自动化工具,程序设计模型和数据库集成在一起就会让程序逻辑和数据模型杂乱无章地混合在一起,不但开发大型网页商业应用软件无望,就连小型的网页应用程序也没有扩展的能力,将来维护起来更是可以用“一塌糊涂”来形容。
微软公司在它的ADO.NET这个数据库访问利器的基础上融入了对象关系映射(Object-RelationalMapping)的技术,再加上一个设计的工具(Designer),就构成了现在的ADO.NETEntityFramework,就是以实体数据模型为主,通过EntityFrameworkDesigner(EF设计器),利用抽象化数据结构的方式,将每个数据库对象转化为应用程序实体(或对象),让数据库的E/R模型(实体-关联模型)也就转换为对象模型。这样,让程序设计师能运用自己最熟悉的面向对象的程序设计语言来轻松自如且安全可靠地调用和访问数据库,让大型网页商业应用软件的开发也不是难事。
EntityFramework是微软.NET平台支持的对象关联映射技术,开发人员可以通过实体数据模型对象与数据库进行沟通,建立更坚固的商业应用程序系统,避免因为通过ADO.NET直接处理SQL语句伴随的风险与可能产生的错误。
从传统的ADO、ADO.NET到现在的EntityFramework,善用新技术让我们在新时代走得更稳,《Entity Framework 实用精要》主要的目标,除了带领读者进入EntityFramework的世界,建立必要的技术能力,同时希望读者在完成书本的学习之后,能够更进一步地将其运用在实际项目开发中。
Entity Framework 实用精要》为了方便读者自学或者学校教学,所有的范例程序都是在微软公司提供的免费版VisualStudioCommunity2017中用C#语言为主体编写完成的,所有范例程序都经过了调试和测试,可以顺利运行。
微软的VisualStudioCommunity2017可以从微软公司的官方网站下载,网址如下:
https://www.visualstudio.com/zh-hans/thank-you-downloading-visual-studio/?sku=Community&rel=15
Entity Framework 实用精要》的所有范例程序源码及其运行必需的文件,读者都可以从下面的网址下载压缩的文件包,之后解压缩到自己的VisualStudio项目文件夹中即可。
这里提供下载范例程序的网址:
http://pan.baidu.com/s/1cuEVUm(注意区分数字和英文字母大小写)
如果下载有问题,请发送电子邮件至booksaga@126.com,邮件主题设置为“求EntityFramework实用精要下载资源”。
最后做一点说明:我们在编写这些范例程序的时候,为了适用性,大多数范例程序都选择连接的是VisualStudioCommunity2017集成开发环境中自带的虚拟数据库(LocalDb)\MSSQLLocalDB,因此范例程序对数据库的操作都是对加载到内存中的这个虚拟数据库进行增、删、改等操作,范例程序运行时可以反映出这种变化,但是不会实际修改范例程序运行时载入的实际数据库文件。如果读者要把范例程序拓展到对实际数据库的操作,那么在需要时按照实际应用建立本地或者网络远端的实际数据库,并提供访问的服务即可。
编者
2017年9月


其他推荐