描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787302500179
《你必须掌握的Entity Framework 6.x与Core 2.0 》共四篇,内容分为19章,*篇(第1~3章)讲述Entity Framework 6.x基础,并深入讲解如何创建过滤索引、迁移的本质等;第二篇(第4~8章)讲述Entity Framework 6.x进阶,充分阐述Entity Framework 6.x背后隐藏的原理、性能优化、并发解析等;第三篇(第9、10章)讲述Entity Framework Core 2.0基础,并对Entity Framework Core每一版本所出现的新特性进行详细介绍和深入研究;第四篇(第11~19章)讲述Entity Framework Core 2.0进阶,内容包括Entity Framework Core变更追踪策略、创建上下文实例方式、性能优化,结合Entity Framework Core 2.0特性实现多租户模式,利用Entity Framework Core进行数据审计、并发解析等。
《你必须掌握的Entity Framework 6.x与Core 2.0 》适合ASP.NET开发人员阅读,也适合高等院校和培训学校相关专业的师生作为教学参考书。
目 录
第一篇 Entity Framework 6.x基础
第1章 Entity Framework的发展 3
1.1
Entity Framework版本介绍 3
1.2
Entity Framework 领域建模方式 4
1.2.1
Code First 4
1.2.2
Model First 5
1.2.3
Database First 5
1.3 使用Entity
Framework Code First 6.x 的原因 6
1.4 小结 6
第2章 数据库表的创建和迁移 7
2.1 数据库连接和初始化策略 7
2.1.1
数据库连接 7
2.1.2
数据库初始化策略 10
2.2 约定 11
2.2.1
类型发现 11
2.2.2
主键约定 12
2.2.3
关系约定 13
2.2.4
复杂类型约定 14
2.2.5
自定义约定 15
2.3 基于代码配置 22
2.4 配置属性映射和关系映射 24
2.4.1
属性映射 25
2.4.2
关系映射 42
2.4.3
私有化属性映射 56
2.5 继承映射策略 58
2.5.1
Table per Hierarchy(TPH) 58
2.5.2
Table per Type(TPT) 59
2.5.3
Table per Concrete class(TPC) 62
2.5.4
Entity Splitting 65
2.5.5
Table Splitting 67
2.6 代码迁移 69
2.6.1
迁移命令 69
2.6.2
迁移的本质 73
第3章 实体状态和数据操作 82
3.1 实体状态 82
3.2 数据操作 84
3.2.1
数据查询 85
3.2.2
数据保存 102
3.2.3
自动生成存储过程 112
3.3 避免陷阱 115
3.3.1
导航属性查询 115
3.3.2
分页查询 116
3.3.3
语义可空 117
3.3.4
表值函数 119
3.3.5
日期操作 121
3.4 基础篇实战 122
第二篇 Entity Framework 6.x进阶
第4章 上下文管理和变更追踪原理 137
4.1 上下文生命周期管理 137
4.1.1
基础模式追溯 137
4.1.2
生命周期追溯 139
4.1.3
进化模式追溯 142
4.2 变更追踪原理 144
4.2.1
快照式变更追踪 144
4.2.2
代理式变更追踪 146
第5章 变更追踪原理和日志管理 155
5.1
DetectChanges原理 155
5.1.1
DetectChanges的用途 155
5.1.2
调用DetectChanges方法的时机 157
5.1.3
关闭自动调用DetectChanges方法 159
5.1.4
遗忘的二进制属性和复杂类型 162
5.2 日志记录 165
5.2.1
ToString打印 165
5.2.2
简单日志打印 166
5.2.3
结构化日志输出 169
5.2.4
构造块拦截 171
5.2.5
拦截器异常性能监控 175
5.2.6
拦截器解决EF 6.1忽略字符串空格历史遗留问题 187
5.3 事务 191
5.4 连接弹性 212
第6章 并发冲突 217
6.1 初级版解析 217
6.2 中级版解析 222
6.2.1
客户端获胜 223
6.2.2
数据库获胜 224
6.2.3
客户端和数据库合并获胜 225
6.3 高级版解析 226
6.3.1
简单重试策略 226
6.3.2
Polly重试策略 227
第7章 性能优化实践 231
7.1 优化一:预编译视图 231
7.2 优化二:减少首次与数据库交互的代码 235
7.3 优化三:NGen安装Entity
Framework 程序集 237
7.4 优化四:AsNoTracking 239
7.5 优化五:缓存 239
7.6 优化六:重新编译查询 245
7.7 优化七:避免“N 1”Select查询 249
7.8 优化八:添加索引 251
7.9 优化九:关闭回调DetectChanges方法 255
7.10
优化十:使用异步查询 257
第8章 Entity Framework 6.x实战 258
8.1 工作单元泛型仓储模式 258
8.2 依赖注入泛型仓储模式 278
第三篇 Entity Framework Core 2.0基础
第9章 数据库表的创建和迁移 295
9.1 数据库初始化策略 295
9.2 配置属性映射和关系映射 298
9.2.1
属性映射 300
9.2.2
Backing Fields 311
9.2.3
Alternate Keys 316
9.2.4
Shadow Property 317
9.2.5
Owned Entities 321
9.2.6
HasQueryFilter修改 322
9.2.7
关系映射 327
9.2.8
继承映射 346
9.3 代码迁移 351
9.3.1
控制台程序迁移 351
9.3.2
Web应用程序迁移 353
9.3.3
多个上下文迁移 364
9.3.4
脚手架逆向迁移 367
第10章 数据操作和初始化数据 371
10.1
实体状态 371
10.2
数据操作 371
10.2.1
数据查询 371
10.2.2
数据保存 393
10.3
无连接实体 398
10.4
初始化数据 401
第四篇 Entity Framework Core 2.0进阶
第11章 性能优化实践 407
11.1
AsNoTracking 407
11.2
EF.Functions.Like 410
11.3
自定义标量函数 412
11.4
显式编译查询 416
11.5
上下文实例池 419
第12章 查询实体元数据和模型数据验证 424
12.1
查询元数据 424
12.2
内置模型验证 426
12.3
第三方扩展模型验证 429
第13章 上下文实例创建方式 432
13.1
显式创建上下文实例 432
13.1.1
带有构造函数的OnConfiguring方法 432
13.1.2
传递连接字符串参数到构造函数 433
13.1.3
使用不带依赖注入的DbContextOptions 433
13.2
依赖注入容器创建上下文实例 434
13.2.1
带有无参构造函数的DI 434
13.2.2
带DbContextOptions的DI 434
13.3.3
使用泛型DbContextOptions 435
13.3.4
使用AddDbContext/AddDbContextPool 436
第14章 实现多租户 437
第15章 捕获审计数据 446
第16章 变更追踪策略和日志管理 451
16.1
变更追踪策略 451
16.1.1
INotifyPropertyChanged 453
16.1.2
INotifyPropertyChanging 457
16.2
日志管理 458
16.2.1
添加控制台包输出 458
16.2.2
自定义日志输出 459
第17章 xUnit单元测试 462
17.1
控制台单元测试 463
17.2
NET Core Web应用程序单元测试 465
第18章 事务和并发冲突 468
18.1
事务 468
18.2
并发冲突 473
18.2.1
初级版解析 474
18.2.2
中级版解析 478
18.2.3
高级版解析 482
第19章 Entity Framework Core 2.1 待发布 488
本书背景在Web开发中,ASP.NET MVC使用相当广泛,与之呼应的是使用ORM框架Entity Framework作为概念上的数据访问层,目前有些互联网招聘公司招聘时会明确要求熟练掌握Entity Framework。很多人对Entity Framework嗤之以鼻,不可否认,Entity Framework的性能确实是一个令人头疼的问题,但是还未到弃用的地步,大部分情况下还是我们的认识太浮于表面,没有深究原理,看清其本质。微软为我们封装了一切,我们只需进行傻瓜式的操作即可,但是最终带来的却是疯狂吐槽,请深入思考自己对Entity Framework是否有足够了解。笔者看过并搜索过很多关于Entity Framework和Entity Framework Core的博客,发现大部分内容介绍的太过浅显,学习一门新技术需要的是细嚼慢咽而非囫囵吞枣。对于中文版的Entity Framework和Entity Framework Core,市面上几乎没有一本著作进行相关介绍,导致很多人都是跟着别人的脚步笼统地学着,且一知半解、不知所云。基于以上几点,笔者打算尽最大的能力分享自己所理解的Entity Framework和Entity Framework Core,让大家能够循序渐进并系统地学习。本书特点本书中Entity Framework和Entity Framework Core的内容完全不是从官方网站摘抄和翻译而来,如果你看过官方网站的目录介绍就会发现和笔者所列举的目录截然不同,从基础到进阶都经过笔者的精心编排,同时一切内容都不会蜻蜓点水似的泛泛而谈,均结合实际小型案例有理有据论证而来,掌握基础是必备前提,在完善基础的充分条件下,你会进一步深入基础。原理是必要条件,在掌握原理的条件下,从吸收到消化才是最终的归宿。如果你在实际项目中正在用Entity Framework 6.x,相信Entity Framework 6.x的内容会对你有进一步提高,如果你还在担心Entity Framework 6.x的性能,那么可阅读Entity Framework Core 2.0的内容,相信会让你刮目相看。本书读者本书Entity Framework 6.x的内容适合想快速提高的初学读者、想基础拾遗的回炉读者、想进一步提高的进阶读者,而Entity Framework Core 针对已跨平台的.NET Core应运而生,对于想要学习新技术的初学读者和已在项目中应用而需进一步深入的进阶读者均具有很强的参考和学习价值,同时高等院校和.NET技术培训机构也可选择本书作为参考教材。代码、勘误和支持本书中的实例代码已上传至Github上(https://github.com/wangpengxpy)。虽然笔者耗费大量时间对书稿进行反复的修改和推敲,但是水平有限,仍难免有疏漏之处,为了使本书能够更好地为读者服务,如果有问题,可通过QQ邮箱([email protected])与笔者的博客(http://www.cnblogs.com/createmyself)与本人联系。笔者将竭力解决所有问题,并向你的指正致谢。致谢感谢夏毓彦编辑以及出版社其他人对本书所做的工作,正是你们的贡献使得这本书得以出版。你们所做的工作提升了本书的质量和准确性,使本书的品质能够得到保证,也让笔者更加有信心将自己对技术的理解展示给需要的读者。写好一本书所投入的精力和时间无法估量,没有家人的支持和女友的理解,这本书不可能面世。感谢我的父亲、母亲、哥哥、姐姐,他们永远是我归宿的港湾,是我人生的支点和明灯,谢谢他们恒久不变的支持。特别感谢我的女友刘瑶,因为写作本书花费了大量时间而忽略了对她的关心,感谢她的体贴入微。现在,本书算是告一段落,终于有时间去多陪陪她了。当然,最重要的是感谢一直以来关注笔者的同行技术者,是他们的鼓舞和肯定使得笔者在技术路上走得更远,感谢博客园给予的平台,让笔者能够学习和分享自己的见解,同时也感谢选择本书的读者,相信本书能够让你有所收获。T-SQL语言的两种支汪 鹏2018年1月
评论
还没有评论。