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

前言

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

写作初衷

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

写作态度

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

640?wx_fmt=png

你必须掌握的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,也有我个人的一些思考,若本书能够对您有所帮助,那么如我写博客一样成就感就在于此了,期待本书能够得到您的认可,我会一如既往和大家分享我所得。

原文地址: https://www.cnblogs.com/CreateMyself/p/8655069.html


.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

640?wx_fmt=jpeg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/321368.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

.NET Core玩转机器学习

ML.NET 专门为.NET开发者提供了一套跨平台的开源的机器学习框架。ML.NET支持.NET开发者不需要过度专业的机器学习开发经验,就能轻松地训练自己的模型,并且嵌入到自己的应用中。一切尽在.NET之中。ML.NET早期是由Microsoft Research开发,近十年…

【记忆化搜索】【线性化DP】滑雪 (ssl 1202/luogu 1434/pku 1088)

滑雪滑雪滑雪 ssl 1202 luogu 1434 pku 1088 题目大意: 有一个N*M的矩阵,每个位置都有一个数,可以从大的数走向小的数,问可走的路最长是多少 原题 Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激。可是为了获…

微软Build 2018展示Visual Studio功能:跨系统云编程

5 月 8 日凌晨消息,微软 Build 2018 开发者大会在今天正式来开帷幕。很明显整场发布会被分为了上下两个部分,上半场如果说是聊一些技术实现和愿景,那下半场就应该说是实战说明了。跨平台云端编程了解下微软在现场展示了 Visual Studio&#x…

利用Skywalking-netcore监控你的应用性能

SkywalkingSkyWalking开源项目由吴晟于2015年创建,同年10月在GitHub上作为个人项目开源。SkyWalking项目的核心目标,是针对微服务、Cloud Native、容器化架构,提供应用性能监控(APM)和分布式调用链追踪能力。2017年11月…

async/await 的基本实现和 .NET Core 2.1 中相关性能提升

前言这篇文章的开头,笔者想多说两句,不过也是为了以后再也不多嘴这样的话。在日常工作中,笔者接触得最多的开发工作仍然是在 .NET Core 平台上,当然因为团队领导的开放性和团队风格的多样性(这和 CTO 以及主管的个人能…

使用Swashbuckle构建RESTful风格文档

本次和大家分享的是Swagger to WebApi的nuget包Swashbuckle;因为项目需要统一api文档的风格,并要支持多种开发语言(C#,java,python),所以首先想到的是swagger来构建api文档,本章讲解…

【dfs】【bfs】【链表】 求连通分量 (ssl 1759)

求连通分量 ssl 1759 题目大意 由n个点组成的无向图&#xff0c;求连通在一起的点数最大是多少 原题 求一个图的连通分量 Input n 顶点数(<100) 边 Output 连通分量 Sample Input 8 6 3 1 2 2 5 5 4 4 1 8 7 0 0 Sample Output 4 方法一&#xff08;dfs …

发布 Rafy .NET Standard 版本 Nuget 包

去年年中&#xff0c;Rafy 框架的源码就已经支持了 Net Standard 2.0 版本。其开源代码也已经上传到 Github 中&#xff1a;https://github.com/zgynhqf/rafy/tree/NetStandard2.0 。但是这都只是在源码层面支持 NS2.0&#xff0c;并没有发布其正式的 Nuget 包。要使用这个版本…

你关心才值得分享 | K8S网络安全之访问控制技术实践

(请允许我插播下广告&#xff0c;便于其它伙伴了解趣码 Cloud Coder)还是那句话&#xff0c;你关心才值得分享~最近的一起分享就在5.10本周四晚&#xff0c;精彩千万不要错过&#xff01;Hi&#xff0c;你是不是也曾觉得K8S&#xff08; Kubernetes &#xff09;网络安全话题范…

从Xamarin.Essentials谈Xamarin库的封装

编者语&#xff1a;Xamarin在国内的推广还需要努力&#xff0c;其实这真的是移动端开发的一大福音&#xff0c;毕竟用一份代码的时间可以生成iOS/Android/Windows/Linux/macOS/Tizen多个平台&#xff0c;而且是原生的性能。Xamarin在Build 2018发布的新功能有Xamarin.Essential…

【最短路】【图论】【Floyed】牛的旅行(ssl 1119/luogu 1522)

牛的旅行 ssl 1119 luogu 1522 题目大意 有两堆点&#xff0c;每一堆点之中的任何两个点都一定有相连的路线&#xff0c;连接两堆点中的各一个点&#xff0c;使最远的两个点的距离最短 原题 农民John的农场里有很多牧区。有的路径连接一些特定的牧区。一片所有连通的牧区称…

用ASP.NET Core 2.0 建立规范的 REST API -- 预备知识

什么是RESTREST 是 Representational State Transfer 的缩写. 它是一种架构的风格, 这种风格基于一套预定义的规则, 这些规则描述了网络资源是如何定义和寻址的.一个实现了REST这些规则的服务就叫做RESTful的服务.最早是由Roy Fielding提出的.RPC 风格/getUsers/getUser?id1/c…

使用ML.NET预测纽约出租车费

有了上一篇《.NET Core玩转机器学习》打基础&#xff0c;这一次我们以纽约出租车费的预测做为新的场景案例&#xff0c;来体验一下回归模型。场景概述我们的目标是预测纽约的出租车费&#xff0c;乍一看似乎仅仅取决于行程的距离和时长&#xff0c;然而纽约的出租车供应商对其他…

使用ML.NET实现情感分析[新手篇]

在发出《.NET Core玩转机器学习》和《使用ML.NET预测纽约出租车费》两文后&#xff0c;相信读者朋友们即使在不明就里的情况下&#xff0c;也能按照内容顺利跑完代码运行出结果&#xff0c;对使用.NET Core和ML.NET&#xff0c;以及机器学习的效果有了初步感知。得到这些体验后…

潘正磊:再过三五年 AI会变成开发人员的基本概念

在微软Build 2018开发者大会上&#xff0c;微软公司全球开发平台事业部的资深副总裁潘正磊&#xff08;Julia Liuson&#xff09;接受了界面记者在内的采访。潘正磊在微软西雅图总部带领一千多人组成的团队&#xff0c;微软的开发工具&#xff0c;包括Visual Studio&#xff0c…

qMISPlat入门级使用问题解答一

qMISPlat 2.0(业务配置开发平台) 自2018-4-18号正式开源以来&#xff0c;得到了众多.net core爱好者的关注&#xff0c;现将近半个月以来&#xff0c;大家反馈的一些使用配置方面的问题统一作如下解答。如你对qMISPlat不了解&#xff0c;请查看文章qMISPlat产品介绍。一、从码云…

【模拟】游戏(jzoj 1614)

游戏 题目大意&#xff1a; 有一个n*n的棋盘&#xff0c;有一个坐标在x,y的棋子&#xff0c; 1、2号玩家可以将他向左&#xff0c;向下&#xff0c;向左下&#xff08;45∘45^{\circ}45∘&#xff09;移动若干格&#xff0c;假如他们都是AKIOI聪明绝顶的巨佬&#xff0c;请问…

P4593-[TJOI2018]教科书般的亵渎【拉格朗日差值】

正题 题目链接:https://www.luogu.com.cn/problem/P4593 题目大意 场上有若干只怪&#xff0c;最高的为nnn&#xff0c;每个怪血量不同&#xff0c;有mmm个血量不存在。 不停释放亵渎&#xff08;全场打一&#xff0c;如果有怪死亡就再次生效&#xff09;&#xff0c;每次一…

如何创建一个基于 MSBuild Task 的跨平台的 NuGet 工具包

MSBuild 的 Task 为我们扩展项目的编译过程提供了强大的扩展性&#xff0c;它使得我们可以用 C# 语言编写扩展&#xff1b;利用这种扩展性&#xff0c;我们可以为我们的项目定制一部分的编译细节。NuGet 为我们提供了一种自动导入 .props 和 .targets 的方法&#xff0c;同时还…

Platform.Uno介绍

编者语&#xff1a;Xamarin国内很多人说缺乏可用的实例&#xff0c;我在写书过程中在完善一些常用场景的例子&#xff0c;希望帮到大家。Build 2018结束一周了&#xff0c;善友问我要不要谈谈Xamarin的一些变化&#xff0c;但碍于时间有限一直没有付诸行动。想想总得写点什么给…