EF Core 快速上手——EF Core 介绍


本章导航

  • 从本书你能学到什么
  • 对EF6.x 程序员的一些话
  • EF Core 概述
    • 1.3.1 ORM框架的缺点
  • 第一个EF Core应用

  本文是对《Entity framework in action》部分章节的翻译,某些场景也会附上笔者实践的Demo。尽管很认真的斟酌,但是水平有限,还请各位批评和斧正。

  Entity Framework Core, 或者 EF Core,是一个方便软件工程师访问数据库的库。有很多方法来构建这样的一个库,但是EF Core 被设计为一个对象和关系的映射器(也就是我们常说的ORM框架)。ORM是把两个世界的东西映射在一起,一个是关系型数据库自身API,另一个是面向对象世界的类和软件代码。EF Core的优势在于,让软件工程师能够通过代码快速访问数据库。

  EF Core,微软发布于2016年,它具有跨平台性:它可以运行在Windows,Linux,mac等操作系统上。它使用EF Core来命名的主要原因,确实是因为他是.NET Core 原创的一部分(但是.NET Core 也可以用于现存的.NET Framework)。

   EF Core, ASP.NET Core (服务端APP), 和 .NET Core都是开源的,并且都有提供给开发团队交流的活跃的issues页面。

   EF Core不是 Entity Framework的第一个版本.现存的大家最为熟知的Entity Framework版本是EF 6.X. EF Core一开始就汲取了Entity Framework 4到6.x多年积累的经验和反馈意见。她保持了和EF 6.x一样接口,但是在底层做了重大改造。比如,它支持非关系性数据库,这在EF 6.x中并没有设计。作为EF5和6.x的用户,我能看到EF Core相对于此前的版本有了提高,同时也看到我喜欢的那些在EF 6.x中的特性在EF Core中还没有(尽管那些特性已经在列入了开发日程)。

   本书的目标读者可以是那些从未使用过Entity Framework的开发人员,也可以是那些EF 6.x老手,还可以是那些想了解EF Core 能做什么的人。我假定你们都熟悉.net 和 C#开发,至少对关系型数据库有所了解。但我不假定你们会使用SQL语言(一种用于大多数关系型数据库的语言),因为EF Core能够帮你做太多的事情(不用sql).但是,我会想你展示EF Core生成的SQL,因为它能帮助您理解发生了什么。使用EF的某些高级特性需要有SQL知识,而本书会提供大量的插图来帮助您学习。

  本章将通过也小例子来价绍EF Core的使用。这个例子会调用EF Core.你也将会你看到 EF Core是底层是如何翻译软件命令并访问数据库。对EF Core底层原理的概览有助于阅读本书的其余部分。

1.1 从本书你能学到什么

  本书被分为三个部分.除了本章,第一部分还有其它四章。

  学完第一部分,你将能够使用关系数据库构建一个.net 应用。但是数据库的组织方式留给EF Core来处理。举个例子,EF Core 默认会设置数据库字段的类型和大小,这会浪费一点点空间。

  第二部分,会涉及到如何和为什么要修改默认配置,并深入地查看一些EF Core 命令。学完第二部分,您将能够根据您的想法,用EF Core精准的创建数据库.或者链接那些具有特定结构和设计的数据库。并且,通过使用EF Core的一些高级特性,您能够改变你.net 应用程序中数据库数据的暴露方式——比如,控制软件更加谨慎地访问数据或者构建代码来自动跟踪数据库的变化。

  第三部分,全是关于提高您的技能,以及使您能够更好地开发和调试EF Core应用程序。我展示了一个真实的EF Core应用,从一系列熟知的模式和实践入手,而这是您是可以拿来即用的。阅读这些章节,你可单元测试,对EF Core进行扩展,而最重要的是,可以发现和修复EF Core 的性能问题。

1.2 对EF6.x 程序员的一些话

如果你是Entity Framework的新手,可以跳过本节。

   如果你是熟悉EF 6.x的读者,EF Core的大部分你会熟悉。为了引导您快速地阅读完本书,我增加了EF6的说明。

EF 6

在本书中,请留意这样的说明。他们指出了EF Core和EF 6.x的不同之处。同时,一定要看每章末尾的总结。他们会指出EF Core和EF 6.x的重大变化。

  我将以自己学习EF Core经历给你一些建议。我太熟悉EF 6.x,在我刚开始学习EF Core的时候,却变成了一个问题。

  我使用EF 6.x的方法处理问题,但不知道EF Core 有新的方法解决这些问题。在大多数情况中,这些方法是类似的,但是一些方面,却不是。

  对于使用过EF 6.x的读者,我的建议是请把EF Core当成一个新的库,就当是某些人模仿EF 6.x写的。但是,必须明白它与EF 6.x不同。
那样,你会注意到EF Core中c处理问题的新的和不同的方法。

1.3 EF Core 概述

  .NETCore用于关系型数据库和.net世界中类和代码的映射,俗称ORM框架。表1.1展示了他们之间的映射关系。

1.3.1 ORM框架的缺点

  造一个好的ORM框架非常困难。尽管EF 6.x和EF Core看起来很好用,某些时候的EF Core的“魔法”让你惊叹。在我们深入学习EF Core工作原理之前,请让我提出两个问题。

  第一个是对象关系的不匹配。数据库服务器和面向对象的软件使用不同的规则:数据库使用主键来定义一条记录的唯一性,然而,.net类的实例默认是以它们的引用来区分。EF Core帮助你处理了大部分,但是.net 类会被这些key和value"污染"。大多数情况下,EF Core会运行良好,但是为了适应数据库,对于纯软件的项目解决方案,有时候我们处理的有一点点不同。你将在第二章看的例子就是多对多关系:在C#中处理很容易,但是在数据库中有点繁琐。

  第二个问题是ORM框架——特别像EF Core这样尽善尽美的框架——把数据库隐藏的很好以至于有时候你会忘记数据库的底层是如何运作的。这个问题回导致你的代码在测试APP上运行良好,但是在数据库很复杂且同时有大量用户时的真实环境中表现糟糕。

  这就是我为什么会花时间在本章,展示EF Core内部是如何工作的,以及如何生成SQL的。你越了解EF Core的工作原理,你就越能够写出好的EF Core代码。更重要的是,当它不工作的时候你知道做什么。

NOTE:

贯穿于这本书,我本着"先跑起来,但是在我需要的时候能够变得更快"的思路来使用EF Core.
EF Core 让我开发快速,但是我也意识到,因为EF Core或者我没有很好的使用EF Core导致在一些特定的业务需求,数据库访问的性能不够好。第5章会介绍如何隔离你EF Core,这样你就能以最小的副作用体调整它。第13章将介绍如何发现和优化那些不够快速的EF Core代码。

1.4 第一个EF Core应用

https://github.com/HuYiDaoKing/zhikecore

参考

  •   《Entity Framework Core In Action》

EF Core 快速上手——EF Core 入门的更多相关文章

  1. EF Core 快速上手——EF Core的三种主要关系类型

    系列文章 EF Core 快速上手--EF Core 入门 本节导航 三种数据库关系类型建模 Migration方式创建和习修改数据库 定义和创建应用DbContext 将复杂查询拆分为子查询   本 ...

  2. EF Core 快速上手——创建应用的DbContext

    系列文章 EF Core 快速上手--EF Core 入门 EF Core 快速上手--EF Core的三种主要关系类型 本节导航 定义应用的DbContext 创建DbContext的一个实例 创建 ...

  3. .net core快速上手

    2014年11月12日的Connect ();开发者活动上宣布将.NET堆栈基于MIT协议开源,并且提供开源保证,托管在Github上.当时的版本与最终目标相距甚远,然而有一点可以肯定的是,这是一个与 ...

  4. 快速上手 Rook,入门云原生存储编排

    Rook 是一个开源 cloud-native storage orchestrator(云原生存储编排器),为各种存储解决方案提供平台.框架和支持,以与云原生环境进行原生集成. Rook 将存储软件 ...

  5. Flask入门和快速上手

    目录 Flask入门和快速上手 python三大主流框架对比 Flask安装 依赖 可选依赖 创建flask项目 flask最小应用--hello word 非法导入名称 调试模式 路由 唯一的 UR ...

  6. 聊天系统Demo,增加Silverlight客户端(附源码)-- ESFramework 4.0 快速上手(09)

    在ESFramework 4.0 快速上手 -- 入门Demo,一个简单的IM系统(附源码)一文中,我们介绍了使用ESFramework的Rapid引擎开发的winform聊天程序,本文我们将在之前d ...

  7. Entity Framework Core(EF Core) 最简单的入门示例

    目录 概述 基于 .NET Core 的 EF Core 入门 创建新项目 更改当前目录 安装 Entity Framework Core 创建模型 创建数据库 使用模型 基于 ASP.NET Cor ...

  8. 【笔记目录1】【jessetalk 】ASP.NET Core快速入门_学习笔记汇总

    当前标签: ASP.NET Core快速入门 共2页: 1 2 下一页  任务50:Identity MVC:DbContextSeed初始化 GASA 2019-03-02 14:09 阅读:16 ...

  9. WebAPI调用笔记 ASP.NET CORE 学习之自定义异常处理 MySQL数据库查询优化建议 .NET操作XML文件之泛型集合的序列化与反序列化 Asp.Net Core 轻松学-多线程之Task快速上手 Asp.Net Core 轻松学-多线程之Task(补充)

    WebAPI调用笔记   前言 即时通信项目中初次调用OA接口遇到了一些问题,因为本人从业后几乎一直做CS端项目,一个简单的WebAPI调用居然浪费了不少时间,特此记录. 接口描述 首先说明一下,基于 ...

随机推荐

  1. Windows上安装配置SSH教程(9)——综合应用:在Windows上使用脚本实现SSH远程登陆与文件传输

    服务器端操作系统:Windows XP 客户端操作系统:Windows10 安装与配置顺序 1.服务端安装OpenSSH 2.服务端配置OpenSSH 3.客户端安装Cygwin 4.客户端安装Tcl ...

  2. 利用css+原生js制作简易钟表

    利用css+原生js制作简单的钟表.效果如下所示 实现该效果,分三大块:html.javascript.css html部分html部分比较简单,定义一个clock的div,内部有原点.时分秒针.日期 ...

  3. SpringBoot之旅第六篇-启动原理及自定义starter

    一.引言 SpringBoot的一大优势就是Starter,由于SpringBoot有很多开箱即用的Starter依赖,使得我们开发变得简单,我们不需要过多的关注框架的配置. 在日常开发中,我们也会自 ...

  4. mybatis 增加热加载xml

    由于在本地开发环境上每次修改mybatis xml文件都需要手动重启服务,调试的很麻烦,所以需要热加载xml文件来避免浪费时间,于是网上搜一下资料,看了下有一大堆,但试了下真正能跑起来没有(大都代码没 ...

  5. java基础(八)-----深入解析java四种访问权限

    Java中的访问权限理解起来不难,但完全掌握却不容易,特别是4种访问权限并不是任何时候都可以使用.下面整理一下,在什么情况下,有哪些访问权限可以允许选择. 一.访问权限简介 访问权限控制: 指的是本类 ...

  6. 深入浅出—Redis集群的相关详解

    前言: 这篇文章主要介绍了Redis集群的相关,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值. 注意!要求使用的都是redis3.0以上的版本,因为3.0以上增加了red ...

  7. MySQL5.7下面,误操作导致的drop table db1.tb1; 的恢复方法:

    MySQL5.7下面,误操作导致的drop table db1.tb1; 的恢复方法: 0.停业务数据写入.[iptables封禁] 1.从备份服务器上拉取最新的一个全备文件,恢复到一个临时的服务器上 ...

  8. 关于thinkphp5手动抛出Http异常时自定义404页面报错的问题

    在使用HttpException手动抛出异常时,希望跳转到自定义的错误页面,官方的文章中是这样描述的. 可以使用\think\exception\HttpException类来抛出异常 // 抛出 H ...

  9. kafka 幂等生产者及事务(kafka0.11之后版本新特性)

    1. 幂等性设计1.1 引入目的生产者重复生产消息.生产者进行retry会产生重试时,会重复产生消息.有了幂等性之后,在进行retry重试时,只会生成一个消息. 1.2 幂等性实现1.2.1 PID ...

  10. springboot 多线程执行

    一.springboot开线程执行异步任务 1.Spring通过任务执行器TaskExecutor,来实现多线程和并发编程,使用ThreadPoolTaskExecutor可实现一个基于线程池的Tas ...