基本信息
【插图】

编辑推荐
(1)由基础到进阶,经作者精心编排,均结合实际小型案例有理有据论证而来
(2)掌握基础是必备前提,在完善基础的必要条件下,你会深化基础、步向进阶
(3)吸收他人经验,但仍需进行反思,继而抽象概括,最终应用于实践、达到内化深入EF与EF Core技术,掌握跨平台ORM框架
内容简介
计算机书籍
《你必须掌握的Entity Framework 6.x与Core 2.0 》针对Entity Framework 6.x和Entity Framework Core 2.0以通俗易懂的语言进行深入、全面的探讨,并结合实例来介绍如何灵活运用。
《你必须掌握的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开发人员阅读,也适合高等院校和培训学校相关专业的师生作为教学参考书。
作译者
目录
第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
前言
在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邮箱(2752154844@qq.com)与笔者的博客(http://www.cnblogs.com/createmyself)与本人联系。笔者将竭力解决所有问题,并向你的指正致谢。
致谢
感谢夏毓彦编辑以及出版社其他人对本书所做的工作,正是你们的贡献使得这本书得以出版。你们所做的工作提升了本书的质量和准确性,使本书的品质能够得到保证,也让笔者更加有信心将自己对技术的理解展示给需要的读者。
写好一本书所投入的精力和时间无法估量,没有家人的支持和女友的理解,这本书不可能面世。感谢我的父亲、母亲、哥哥、姐姐,他们永远是我归宿的港湾,是我人生的支点和明灯,谢谢他们恒久不变的支持。特别感谢我的女友刘瑶,因为写作本书花费了大量时间而忽略了对她的关心,感谢她的体贴入微。现在,本书算是告一段落,终于有时间去多陪陪她了。
当然,最重要的是感谢一直以来关注笔者的同行技术者,是他们的鼓舞和肯定使得笔者在技术路上走得更远,感谢博客园给予的平台,让笔者能够学习和分享自己的见解,同时也感谢选择本书的读者,相信本书能够让你有所收获。
T-SQL语言的两种支
汪 鹏
2018年1月
媒体评论
算
作者是我们博客园的知名博主,我读过他写的很多关于EF与EF Core的博文,从中学到很多,作者对待技术的认真、严谨、刨根问底让人印象深刻。深厚的技术功底,对EF家族的持续探索,通过博客的千锤百炼,在我眼里,这本书是作者长期辛勤耕耘的自然成果。
博客园创始人 杜勇
当我第一次看到这本书目录的时候,就感到很惊喜,因为这正是我所需要的EF书籍。在过去,一些从事.NET开发工作的朋友让我推荐几本有关Entity Framework方面的书,可找来找去一本国内的书都找不出,最终只好推荐几本国外的英文书。国外的一些开发书籍比较侧重理论,喜欢讲原理,而我相信大多数国内的开发人员更喜欢理论和实践相结合的书,这是由国内的行情决定的。而此书的出现无疑弥补了国内书籍在Entity Framework方面的空白,书中的内容几乎涵盖了EF在工作当中的各种知识点及应用场景,不得不说这是作者多年EF开发经验的精华,对于所有想学习EF人来说,此书都将是一本非常不错的参考书。
深圳市紫衡技术有限公司.NET软件架构师 邹琼俊
Entity Framework和Entity Framework Core都是微软的ORM技术,在社区它们有着褒贬不一的评价,这本书同时涵盖了Entity Framework和Entity Framework Core的技术,让你一窥EF技术体系,做到知己知彼,避开错误使用的坑,不人云亦云。
腾讯高级工程师 张善友
Entity Framework伴随.NET 3.5发布以来已有近10年历史,但国内在这方面的资料却是七零八落,且关于EF和EF Core的中文书籍几乎是一片空白,本书从Entity Framework到最新的Entity Framework Core,无论是基础内容还是进阶内容皆有详细讲解,从作者在博客上发表的文章就知其深度和独特的见解,对于想全面和深入学习Entity Framework和跨平台的Entity Framework Core的同学,此书可作为首选。
博客园知名博主 赵培
Entity Framework是.NET开发平台主流的数据访问框架,虽然面世近10年,却始终没有一本中文教程得以出版,这增加了初学者的学习难度,本书的出版填补了国内EF技术的空白,实为.NET开发人员之幸。
EF是一个“真正”的ORM(对象关系映射)框架。为什么这样说,因为很多开发人员经常用一些“轻量级”的ORM与EF进行比较,进而得出EF性能低下难以使用的结论。他们忽视了EF提供的大量复杂而重要的功能,比如工作单元、类层次关系映射、值对象映射等特性。要把EF用好,除了了解EF本身外,还需要了解EF的关键使用场景以及面向对象设计的一些知识。
EF的一个关键使用场景是利用面向对象思想来开发复杂的业务逻辑,这正是EF提供复杂特性的原因,如果你对面向对象基本方法没有认识,那么EF对你的帮助就会大打折扣。
当你使用EF来编写复杂的查询时,可能会发现编写的代码冗长,生成的SQL复杂且性能低下,优化也比较困难。对于这种场景,采用EF和LINQ并不是值得推荐的方案,相反,使用纯SQL会得到更大的自由。你可以使用EF来执行SQL,不过有经验的开发人员更倾向于使用轻量级的工具,比如Dapper。
多种数据访问工具配合是正确使用EF的关键。一些开发人员希望采用一种统一的数据访问技术,这种想法过于理想,每种技术有其优势和局限,技术选型的失误往往会导致项目失利。
除了错误使用场景外,EF还可能因为错误的使用方式而导致性能故障。
EF的头号性能杀手是延迟加载特性,在我参与的某个项目中,一位初级水平的同事使用EF进行数据导入操作时,大致5个表,每个表不到一万条记录,一次导入操作需要3个小时,排查原因后发现,原来他进行了嵌套循环,并使用了延迟加载,后来使用Include即时加载数据,一分钟不到就导入完毕。对于延迟加载,通过观察生成的SQL日志就可以了解发出了多少SQL请求,进而排查性能故障。
EF另一个容易引发的性能问题是由更改跟踪特性引起的。对于一个导入数据的场景,先不谈是否提交到数据库,只是把100万个对象添加到 EF 对象集合中就需要花费数分钟时间,所以EF对象集合不应该当成普通的集合使用。对于这个场景,可以把对象先放入一个普通集合,再通过AddRange批量添加到EF对象集合。
本书不仅是一本 EF 的常规使用教程,更是浓缩作者心血的经验之作,本书对EF的原理、架构、故障排查等均有详细论述,是 .NET 开发者不可多得的优秀图书。本书的出版是中国.NET开发者之幸事、.NET 社区之盛事,感谢本书作者对 .NET 社区的贡献。
本人作为中国.NET社区NCC(https://github.com/dotnetcore)的项目成员之一,欢迎优秀框架的作者和作品加入,为壮大社区力量、扩大.NET技术栈的影响力共同努力。