[翻译 EF Core in Action 1.10] 应该在项目中使用EF Core吗?

Entity Framework Core in Action

Entityframework Core in action是 Jon P smith 所著的关于Entityframework Core 书籍。原版地址. 是除了官方文档外另外一个学习EF Core的不错途径, 书中由浅入深的讲解的EF Core的相关知识。由于没有中文版,因此本人对其进行翻译。 预计每两天一篇更新 PS: 翻译不免限于本人水平有不许确的地方,建议英文水平不错的同窗直接查看原版,有不足的地方欢迎指正html

第一部分目录导航

应该在项目中使用EF Core吗?

在简单介绍了EF Core以及它的工做方式以后,接下来的问题是你是否应该在项目中开始使用EF Core. 对于想要使用EF Core的人来讲,关键的问题是EF Core是否优与目前项目中使用的数据库访问库,简单的说就是它是否值得咱们使用. 学习和使用新的类库都是有成本的,特别是像EF Core这样庞大复杂的库linux

我会给你一个详细的答案,正如你接下来看到的,我想更直观的描述. 图1.11展现了我对EF Core优缺点的见解: 优势在右边,缺点在左边. 每一个块的宽度是我认为该部分被改善的时间段: 越宽花费的时间越长. 这只是个人观点,因此不要把它当作事实,我但愿本书后续的内容能够帮助你思考EF Core对项目的影响git

让咱们从优势开始,详细的介绍图1.11中的每个块github

最新一代

我从LINQ to SQL切换到了EF 4,由于EF是将来发展的方向,而LINQ to SQL不会再投入更多的精力. 如今的EF Core也是同样. 这是微软正在努力的方向,它会获得更多的扩展和更长的支持. EF Core比EF6.x更轻量,速度更快. 我认为它的API改进的很好数据库

若是你正在启动一个新的项目,而且.NET Core和EF Core适用于你的项目,那么使用EF ore意味着你不会落后windows

跨平台与开源

我在开章开始的时候提到EF Core支持跨平台,你能够在windows,linux和Apple上开发和运行EF Core应用程序. EF Core是开源的,你能够直接查看源码和问题与缺点列表 -- 参见 https://github.com/aspnet/EntityFramework/issues框架

快速开发

在典型的数据驱动应用程序中,我编写了大量的数据库访问代码,有一些很复杂. 我发现EF6.x和如今的EF Core可让我很简便快速的编写数据访问代码,而且易于理解与重构. 这是我使用EF的主要缘由之一工具

EF Core对开发人员很友好,即便我没有编写最良好的代码也每每会建立有效的查询. 大部分格式正确的LINQ查询均可以正常工做,尽管它们可能没法被转换为性能最佳的SQL,不过一个正确有效的查询代码是一个很好的开始(咱们能够再优化). 第12章介绍了性能调优的领域性能

良好的文档与支持

EF Core有完善的文档 (https://docs.microsoft.com/zh-cn/ef/core/index), 一样还有本书将文档与更深刻的介绍和示例以及模式结合在一块儿,使你成为一名优秀的开发人员. 由于有不少EF 6.x的开发人员迁移到EF Core,互联网上有不少EF Core的博客,Stack Overflow可能已经有了你问题的解决方案学习

支持的另外一部分是开发工具. 微软建立了免费Visual Studio Code跨平台开发环境. 微软还将Visual Studio免费提供了我的和小型企业

经过Nuget包获取安装

尽管.NET Core 1出现了一些早期的困难,但2017年8月.Net Standard 2.0引入的.Net Framework兼容模式已经解决了大部分问题, 这就是EF Core 2.0构建的缘由. .Net Standard 2.0容许早期(大多数).Net版本使用现有的Nuget库. 若是Nuget包使用了不兼容的功能(例如System.Reflection),则会出现问题. .Net Standard 2.0还支持更大范围的系统方法,这使将包转换为.Net Standard 2.0变的更容易

若是你的.Net框架版本是4.6.1或更多,那么你能够直接使用EF Core

全功能的ORM

Entity Framework一般是O/RM的功能丰富的实现, EF Core将继续这一趋势. 它容许编写复杂的数据访问代码,涵盖了你想使用的大部分数据库的功能. 我使用过ADP.NET,LINQ to SQL, EF 4到6以及如今的EF Core, 我相信这已是一个很棒的O/RM了

可是在编写本书时, EF Core(2.0)仍然有一些功能还没有添加, 这就是图1.11中的块如此宽的缘由. 若是你使用过EF 6.x,你会注意到EF6.x的一些功能EF Core中尚未,但随着时间的推移,这些功能都会添加. 我建议你EF Core docs网站的功能比较页 http://mng.bz/ek4D, 在这里能够了解到最新的进展

稳定的类库

当我开始写这个书时,EF Core还不稳定. 它有不少的缺陷和缺乏的功能. 我发现1.0.0版本中使用DateTime的year存在错误, 还有1.1.0中修复的其余LINQ翻译的问题

当你在读到这篇文章时, EF Core已经修复了不少问题,可是仍在变化. 尽管速度要慢的多. 若是你想要稳定,能够选择EF6.x或其余数据库访问技术

保持高性能

对于数据库性能问题,我不会说EF Core开箱即用,它拥有魔法能够生成漂亮的SQL和快速数据摄取带来极高的数据库访问性能. -.-这是不存在的!这是简便的代价: EF Core内部全部的"魔法"都不如手工编写的SQL好,可是你可能会惊讶它的魔法仍是有点料的

幸运的是咱们对此作一些措施.在个人项目中,我发现只有5%到10%的查询是须要手动调优的关键查询. 第12和13章以及第14章的一部分专门讨论性能调优. 咱们有不少手段能够提升EF Core的数据库访问性能

若是你担忧EF Core的性能,我建议你阅读13章,这一章中你会学习如何逐步提升应用程序的性能. 你将看到EF Core能够在不多的额外工做下运行良好. 我有两个演示站点 http://efcoreinaction.comhttp://cqrsravendb.efcoreinaction.com ,在about菜单中能够看到数据库的大小

相关文章
相关标签/搜索