《你掌握的Entity Framework 6.x与Core 2.0 》共四篇,内容分为19章,一篇(第~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
作为一名资深架构师,我最看重的是对底层机制的解释深度。坦白说,许多教程在讲解LINQ to Entities的SQL生成过程时,往往是一笔带过,但我从这本书的结构中预感到,它会在这方面大下功夫。我期待看到它如何剖析查询翻译器(Query Translator)在EF 6和EF Core 2.0之间的演变,特别是对于一些复杂的聚合函数和自定义函数映射的处理。如果能清晰地展示出,某些在EF 6中可以流畅运行的表达式,在迁移到Core 2.0时需要如何重构才能获得等效的SQL性能,那就太有价值了。这种深入骨髓的剖析,对于理解框架的边界和限制至关重要。如果这本书能提供一些关于如何通过“查询标记”(Query Tags)或更底层的拦截器来诊断和优化低效SQL的实战案例,那么它的价值将远超普通参考书的范畴,直接晋升为必备的故障排除手册。
评分我同事最近在负责一个微服务项目的数据迁移工作,他们正在犹豫是否要彻底转向EF Core 2.0。我把这本书推荐给了他,并重点提到了其中关于“迁移策略和数据模型设计”的部分。我猜想,这本书一定详尽地对比了Code First、Database First以及Model First在两种框架下的实现差异和最佳实践。特别是对于Schema管理和数据迁移脚本的自动化生成,这套流程在大型企业级应用中占据了核心地位。如果这本书能提供一套健壮的、可重复的迁移流程指南,涵盖回滚策略和版本控制的集成,那对团队来说简直是无价之宝。我希望它不只是教我们如何写出CRUD操作,而是教会我们如何管理一个伴随系统生命周期不断进化的持久化层。这种宏观视角的指导,是技术人员从“编码者”蜕变为“设计者”的关键一步。
评分这本书的实用性体现在对实际开发场景的贴近程度上。我特别关注那些关于“并发控制”和“事务管理”的章节。在金融和库存管理这类对数据一致性要求极高的领域,如何正确地使用乐观并发(如时间戳或版本号)和悲观锁是日常工作的重中之重。我希望看到作者不仅讲解了EF提供的内置机制,还深入探讨了在分布式事务场景下,如何结合诸如`DbContextScope`这样的设计模式来维护跨多个数据上下文的一致性。如果书中能提供一些关于如何处理“幽灵读”或“不可重复读”等经典隔离级别问题的EF解决方案实例,那无疑是极具说服力的。这种从理论到实践的无缝衔接,才是区分一本优秀技术书籍和一本平庸教程的试金石。我期待它能成为我工具箱里那把最锋利的瑞士军刀,随时准备应对复杂的业务需求。
评分我尝试着快速浏览了一下关于“异步编程与性能优化”那一章节的概览,感觉作者在这方面的处理方式相当老道。很多市面上的书籍在讲解异步操作时,往往只停留在 `async/await` 的基本用法上,但这本书似乎更深入地探讨了在Entity Framework上下文切换和大数据量查询时,如何避免死锁和资源泄漏。我注意到它提到了关于连接池管理在不同EF版本下的细微差异,这一点非常关键,因为在生产环境中,连接池的效率直接决定了应用的吞吐量。更让我惊喜的是,书中对“延迟加载(Lazy Loading)”这种双刃剑进行了非常中立和深入的分析,不仅讲解了它在便利性上的优势,更尖锐地指出了在Web API等请求-响应模型中,如果不加控制可能导致的“N+1”查询灾难。这种不回避问题、直面技术痛点的写作风格,让我对后续学习如何利用这些高级特性来优化我的项目充满了信心。它似乎在教我们如何“驾驭”工具,而不是被工具牵着鼻子走。
评分这本书的装帧设计实在让人眼前一亮,那种沉稳又不失现代感的封面,一下子就抓住了我的眼球。我是在一个技术书店的角落里偶然翻到它的,当时正为寻找一本既能覆盖传统EF 6.x的深度,又能跟上Core 2.0时代步伐的权威指南而苦恼。拿到手里掂了掂,分量十足,预示着内容的广度和厚度。虽然我还没有完全深入阅读,但光是目录和前言部分流露出的那种对技术脉络清晰的梳理,就让我对接下来的学习充满了期待。特别是作者在引言中对.NET生态系统变迁的深刻洞察,让我感到,这不仅仅是一本纯粹的技术手册,更像是一位经验丰富的老兵在为我们指点迷津。我尤其欣赏它在版本迭代间的权衡艺术,没有简单地堆砌新特性,而是着重讲解了在新旧技术栈切换过程中需要注意的关键点和潜在的陷阱。这种细致入微的考量,对于我们这些常年与遗留系统和前沿技术打交道的开发者来说,简直是雪中送炭。这本书的排版也做得极为出色,代码块的字体大小和颜色对比度都经过了精心设计,长时间阅读也不会感到视觉疲劳,这对于需要长时间浸泡在代码和理论中的读者来说,是一个巨大的加分项。
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2025 book.tinynews.org All Rights Reserved. 静思书屋 版权所有