《你必须掌握的Entity Framework 6.x与Core 2.0》书籍出版

前言

到目前为止写过恰好两百来篇博客,看过我博客的读者应该大概知道我每一篇博客都沿袭着一向的套路,从前言到话题最终到总结,本文依然是一如既往的套路,可是不是介绍技术,也可说是介绍技术,不过是介绍书中的技术以及我对写做的态度,做为对本书的宣传,本书在最近即将出版,到时会在博客公告栏中放出购买连接。git

写做初衷

以前有过出版社的编辑找我写书,我当时看了看也没回复最终固然也就是不了了之了,最主要的是以为本身资历尚浅,写书和写博客有很大不一样,写博客在言语上能够略微随意,而写书须要的是严谨同时在表达上也应言简意赅,后来怎么又写上了呢,看了看本身写的博客当属EF最多,记得在我初次学习EF时,我还特地搜索了下有没有相关中文的书籍做为参考资料,然而几乎一本都没有,后来我只能看看园中前辈们的博客和老外的文章来学习,最终也就写了一部分不算完整的EF系列,这个时候我想到是否是能够写一本EF 6.x和EF Core 2.0的书籍呢?做为EF 6.x和EF Core 2.0系统性学习的参考资料,若能帮助到初学和想继续深刻的同行将再好不过了,也算是我对.NET做出的一份努力,同时也但愿经过本书让您从新拾起对EF和EF Core的正确认知。github

写做态度

从选题材到写完书大概耗时半年多的时间,在写EF篇章时脚步稍微快些,由于以前写过,只是在其过程当中EF更新了一点点内容就花了一点时间去看文档,因此相对来讲比较熟练一点,到了EF Core篇章脚步放缓了不少,虽然我也有写过,可是还不够深刻,因此至关于写本书我从头又学习了EF和EF Core并深刻探索到一些鲜为人知的秘密。写完后不久就开始了审稿,接着编辑那边将问题统一概括交由我修改,同时我也秉着对本身负责和对读者负责的态度认真去修正文档中的错误,丝绝不敢懈怠,修改了有问题的地方以及添加了部份内容,都是在凌晨发给了编辑(【捂脸】),在这里要对编辑说声抱歉。如下是我从写做开始到书正式出版的详细记录。数据库

你必须掌握的Entity Framework 6.x和Core 2.0

书籍名称如博客标题所言,您也可将本书看作是您所不知道的Entity Framework 6.x和 Core 2.0,好比您是否知道EF 6.0如何建立索引呢?好比您又是否知道在EF 6.x中如何正确更新数据呢?好比您又是否知道在EF Core中何种状况下即经过lambda表达式使用Include来进行饥饿加载很差使呢?好比您又是否知道在EF Core中经过Find或者FindAsync方法如何进行饥饿加载呢?好比您又是否知道EF Core上下文实例池本质是什么呢?这样的疑问还有太多太多,本书如管中窥豹,带您一探究竟。本书既面向基础学习者也面向进阶学习者,不管您是自学仍是在项目中用到了EF 6.x抑或是EF Core 2.0,本书将对您或许有必定帮助。缓存

推荐致谢

只见过张善友大哥,与其余几位大佬素未谋面,不知是否可以获得大佬们的承认,怀着忐忑的心情去找大佬们写推荐,结果大佬们很快写完就交给我了,在此表示感谢,感谢dudu老大、何镇汐大哥,张善友大哥,赵培(好基友),邹琼俊大哥,感谢大佬们在百忙之中抽空为本书作推荐,感谢大佬们对本书的承认和支持。这里额外打个小广告:何镇汐大哥现做为.NET Core中国社区项目成员之一,以一己之力开发.NET Core平台下的应用框架(https://github.com/dotnetcore/Util),感谢何镇汐大哥对.NET Core所做出的贡献,同时也期待有志之士可以参与进来。性能优化

写做目录

第一篇 1
第 1 章 7
EntityFramework历史 7
1.1 EntityFramework版本介绍 7
1.2 EntityFramework 领域建模方式 9
1.2.1 Code First 9
1.2.2 Model First 10
1.2.3 Database First 10
1.3 使用EntityFramework Code First 6.x 或Core 2.0的缘由 10
1.4 小结 11
第 2 章 12
数据库表建立和迁移 12
2.1 数据库链接和初始化策略 12
2.1.1 数据库链接 12
2.1.2 数据库初始化策略 15
2.2 约定 17
2.2.1 类型发现 17
2.2.2 主键约定 17
2.2.3 关系约定 19
2.2.4 复杂类型约定 20
2.2.5 自定义约定 21
2.3 基于代码配置(Code-based Configuration Settings) 29
2.4 配置属性映射和关系映射 32
2.4.1 属性映射 32
2.4.2 关系映射 50
2.4.3 私有化属性映射 67
2.5 继承映射策略 69
2.5.1 Table per Hierarchy (TPH) 70
2.5.2 Table per Type (TPT) 70
2.5.3 Table per Concrete class (TPC) 73
2.5.4 Entity Splitting 77
2.5.5 Table Splitting 80
2.6 代码迁移 82
2.6.1 迁移命令 82
2.6.2 迁移本质 91
第 3 章 102
实体状态和数据操做 102
3.1 实体状态 102
3.2 数据操做 105
3.2.1 数据查询 105
3.2.2 数据保存 124
3.2.3 自动生成存储过程 135
3.3 避免陷阱
3.3.1 导航属性查询
3.3.2 分页查询
3.3.3 语义可空
3.3.4 表值函数
3.3.5 日期操做
3.4 基础篇实战 138
3.4.1 复杂属性做为JSON存储数据库表列 138
第二篇 153
第 4 章 155
上下文管理和变动追踪原理 155
4.1 上下文生命周期管理 155
4.1.1 基础模式追溯 155
4.1.2 生命周期追溯 157
4.1.3 进化模式追溯 160
4.2 变动追踪原理 163
4.2.1 快照式变动追踪(Snapshot based Change Tracking) 163
4.2.2 代理式变动追踪(Notification based Change Tracking with Proxies) 165
第 5 章 175
变动追踪原理和日志管理 175
5.1 DetectChanges原理 175
5.1.1 DetectChanges用途 175
5.1.2 调用DetectChanges方法时机 177
5.1.3 关闭自动调用DetectChanges方法 180
5.1.4 遗忘的二进制属性和复杂类型 182
5.2 日志记录 186
5.2.1 ToString打印 186
5.2.2 简单日志打印 187
5.2.3 结构化日志输出 190
5.2.4 构造块拦截 192
5.2.5 拦截器异常性能监控 197
5.2.6 拦截器解决EF 6.1忽略字符串空格历史遗留问题 211
5.3 事务 215
5.4 链接弹性 240
第 6 章 246
并发冲突 246
6.1 初级版解析 246
6.2 中级版解析 252
6.2.1 客户端获胜 253
6.2.2 数据库获胜 254
6.2.3 客户端和数据库合并获胜 255
6.3 高级版解析 256
6.3.1简单重试策略 257
6.3.2 Polly重试策略 257
第 7 章 262
性能优化实践 262
7.1 优化一:预编译视图 262
7.2 优化二:减小首次与数据库交互代码 266
7.3 优化三:NGen安装EntityFramework程序集 269
7.4 优化四:AsNoTracking 271
7.5 优化五:DbFunctions/SqlFunctions 271
7.6 优化六:缓存 276
7.7 优化七:从新编译查询 282
7.8 优化八:避免’N+1’ Select查询 287
7.9 优化九:添加索引 289
7.10 优化十:关闭回调DetectChanges方法 293
7.11 优化十一:使用异步查询 296
第 8 章 297
EntityFramework 6.x实战 297
8.1 工做单元泛型仓储模式(Generic Repository and a Unit of Work) 297
8.2 依赖注入泛型仓储模式(Generic Repository Pattern and Dependency Injection) 321
第三篇 338
第 9 章 340
数据库表建立和迁移 340
9.1 数据库初始化策略 340
9.2 配置属性映射和关系映射 344
9.2.1 属性映射 345
9.2.2 Backing Fields 357
9.2.3 Alternate Keys 362
9.2.4. Shadow Property 363
9.2.5 Owned Entities 368
9.2.6 HasQueryFilter 369
9.2.7 关系映射 371
9.2.8 继承映射 393
9.3 代码迁移 398
9.3.1 控制台程序迁移 398
9.3.2 Web应用程序迁移 400
9.3.3 多个上下文迁移 413
9.3.4 脚手架逆向迁移 417
第 10 章 422
数据操做和初始化数据 422
10.1 实体状态 422
10.2 数据操做 423
10.2.1 数据查询 423
10.2.2 数据保存 446
10.3 无链接实体 452
10.4 初始化数据 455
第四篇 459
第 11 章 461
性能优化实践 461
11.1 AsNoTracking 461
11.2 EF.Functions.Like 463
11.3 自定义标量函数 466
11.4 显式编译查询 470
11.5 上下文实例池 473
第 12 章 479
查询实体元数据和模型数据验证 479
12.1 查询元数据 479
12.2 内置模型验证 481
12.3 第三方扩展模型验证 484
第 13 章 488
上下文实例建立方式 488
13.1 显式建立上下文实例 488
13.1.1 带有构造函数的OnConfiguring方法 488
13.1.2 传递链接字符串参数到构造函数 489
13.1.3 使用不带依赖注入的DbContextOptions 489
13.2 依赖注入容器建立上下文实例 490
13.2.1 带有无参构造函数的DI 490
13.2.2 带DbContextOptions的DI 491
13.3.3 使用泛型DbContextOptions 491
13.3.4 使用AddDbContext/AddDbContextPool 492
第 14 章 494
实现多租户 494
第 15 章 504
捕获审计数据 504
第 16 章 510
变动追踪策略和日志管理 510
16.1 变动追踪策略 510
16.1.1 INotifyPropertyChanged 511
16.1.2 INotifyPropertyChanging 514
16.2 日志管理 516
16.2.1 添加控制台包输出 516
16.2.2 自定义日志输出 517
第 17 章 521
xUnit单元测试 521
17.1 控制台单元测试 522
17.2 NET Core Web应用程序单元测试 524
第 18 章 527
事务和并发冲突 527
18.1 事务 527
18.2 并发冲突 533
18.2.1 初级版解析 534
18.2.2 中级版解析 538
18.2.3 高级版解析 543
第 19 章 550
EntityFramework Core 2.1待发布 550
19.1 新特性实现目标 550并发

总结 

本书是我所理解的EF 6.x和EF Core 2.0,也有我我的的一些思考,若本书可以对您有所帮助,那么如我写博客同样成就感就在于此了,期待本书可以获得您的承认,我会一如既往和你们分享我所得。框架

购买通知

下个月可正式购买此书,我将在博客公告栏中标明购买连接,请你们耐心等待,谢谢。异步

相关文章
相关标签/搜索