作者是我们博客园的知名博主,我读过他写的很多关于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技术栈的影响力共同努力。
.NET Core平台Util应用框架作者 何镇汐