[翻译] EF Core 概述
Entity Framework Core in Action
Entityframework Core in action是 Jon P smith
所著的关于Entityframework Core 书籍。原版地址. 是除了官方文档外另一个学习EF Core的不错途径, 书中由浅入深的讲解的EF Core的相关知识。因为没有中文版,所以本人对其进行翻译。 预计每两天一篇更新 PS: 翻译难免限于本人水平有不准确的地方,建议英文水平不错的同学直接查看原版,有不足的地方欢迎指正
第一部分目录导航
EF Core 概述
EF Core可以用作O/RM, 它在关系型数据库和包含类与软件代码的.NET软件之间进行映射. 表1.1展示了EF Core如何映射关系型数据库和.NET软件
O/RM的缺陷
编写一个优秀的O/RM很复杂的,尽管EF6.x或EF Core很容易使用,但有时EF Core的"魔法"会让你大吃一惊(surprise -.-),在我们深入了解EF Core的工作原理之前,我需要先提一下两个需要注意的问题
第一个问题是对象关系抗阻不匹配. 数据库服务器和面向对象的软件使用了不同的规则: 数据库使用主键来定义行是唯一的,而.Net类实例的引用在默认情况下被认为是唯一的. EF Core会为你处理大部分内容,但是你的.Net类会被这些键(主键)"污染",它们的值很重要.虽然大多数情况下EF Core都可以很好的处理,但有时你不得不做一些与纯软件解决方案不同的处理方式.你会在第2章看到一个多对多关系的例子:在C#中很容易,但在数据库中需要多做一些处理
第二个问题是O/RM(尤其是EF Core这样全面的O/RM)将数据库隐藏的深,以至于你有时会忘记数据库中会发生什么,这可能会导致你编写的代码在测试应用中没有什么问题,但是来到了实际的生产环境,当数据库很复杂并且有很多并发用户时,执行的效率会很低下
这就是为什么我会花时间在本章中展示EF Core的工作原理以及它生成的SQL. 对EF Core了解的更多,就越能够编写更好的EF Core代码,更重要的是当出现问题时知道怎么分析
注: 在本书中,我使用 "让EF Core正常工作,但如果我需要,会让它的性能变的更快"的方法来使用EF Core.EF Core让我们快速开发,但由于EF Core的缺陷或我对它的不良使用导致了数据库访问代码的性能不足以满足特定业务需求. 第5章介绍了如何隔离EF Core在最小的代价下对其优化,第13章介绍了如何查找和改进性能低下的数据库访问代码