1、为什么使用ef core?

  市面上orm框架那么多,为何偏偏选择ef,dapper那么好用,性能碾压ef,为什么使用dapper?

  对于这个问题我记得当初一个老师讲entityframework的时候讲过这么一个故事:

    1)一个公司的老板让开发部开发一个软件,一开始的数据库的技术栈:ado.net,当项目真正要用的时候,老板发现sqlserver的费用让他有点不情愿,同样是数据库人家mysql为什么不要钱,所以勒令开发部把数据库换成mysql,从中省下来的钱一部分作为奖金(呵呵哒~),开发部的人当时听了可以啊,有奖金拿,必须换啊,随之而来的是无尽的痛苦,各种语句专属语句不兼容,改了一个星期,勉勉强强能跑了,人累的够呛,项目跑起来后,各种问题随之而来,然而公司并没有熟悉mysql的DBA,运行一周后实在是搞不定了,老板最后决定还是换回sqlserver,又是各种改sql,最后改到人人想吐。

    2)同样尴尬的事儿也在另一个公司发生,但是这个公司的开发者幸福得多,技术栈选了ef,虽然中间也填了很多坑,但是逃过了改sql的命运,老板让从sqlserver 换到 mysql ,开发部要求一周的时间,其实两分钟就ok的事儿,仅仅是替换数据库仅仅换一下连接字符串跟provider(理想情况下是这样的),其余的时间就该他们happy了....。

  当然很多人会说,数据库是一开始就计划好的谁会没事儿换着玩儿,故事始终是故事,我需要的是性能,我就是推崇dapper,好吧,萝卜白菜各有所爱,愿ef越来越好,愿.net越来越好。

2、ef core实践

  1、开发工具vs code,为什么不用visual studio,宇宙第一IDE,工作中真的可以帮助我们省很多事儿,但是个人练习还是建议不用那么好的IDE,少的自动化,多点手动,记忆更加清晰。

  2、本次使用.net core 2.1+ef core 2.1

  3、使用dotnet tools 创建项目:dotnet new console -o EFCoreTest

  4、加入ef core 的依赖:dotnet add package Microsoft.EntityFrameworkCore,加入对应数据库的实现:dotnet add package Microsoft.EntityFrameworkCore.Sqlite(这里用sqlite,数据库比较轻量级),加入ef的tools:dotnet add package Microsoft.EntityFrameworkCore.Tools、Microsoft.EntityFrameworkCore.Tools.DotNet,.net core 中用都是用 json 作为配置文件,所以加入Json的Configuration,dotnet add package Microsoft.Extensions.Configuration、Microsoft.Extensions.Configuration.Json;

  5、编写DbContext代码如下:

appsetting.json: 

{
  "ConnectionStrings":{
    "SqliteConnectionString":"data source=efcore.db;"
  }
}

  6、编写model,随意写一个User类

  7、创建一个迁移:dotnet ef migrations add userinit,更新数据库:dotnet ef database update;

  8、使用ef,新增、编辑、查询数据

  9、基本完成,现在出现个情况我们需要在user类中添加一个字段,该如何实现

    1)、在user类中添加想要的字段;

    2)、创建添加字段的迁移:dotnet ef migrations add UserAddCol,更新数据库:dotnet ef database update;

  10、然后继续运行程序即可。

  11、创建的迁移还可以生成脚本文件:dotnet ef migrations script,默认是从迁移的第一步开始,也可指定如:dotnet ef migrations UserInit UserAddCol -o scripts/2018年06月03日.sql

后记:

  1、ef 简单操作还是非常爽的,减少了很多数据库基本操作

  2、code first 使用migrations实现创建数据库,添加字段等等

  3、官方中文文档

ef core 相关的更多相关文章

  1. EF Core 相关的千倍性能之差: AutoMapper ProjectTo VS Mapster ProjectToType

    在前两天遇到 .NET Core 中 EF Core 的异步与同步查询的百倍性能之差(详情之前的博文)之后,这两天又遇到了 AutoMapper ProjectTo<T> 与 Mapste ...

  2. asp.net core+ef core

    asp.net core+ef core 官方的文档https://docs.asp.net/en/latest/tutorials/first-mvc-app/start-mvc.html 先来看一 ...

  3. .Net Core2.2 + EF Core + DI,三层框架项目搭建教程

    笔记: 近两年.Net Core发展的很快,目前最新版为3.0预览版,之前在网上买了一本1.1版书籍都还没来得及看呢,估计现在拿出来看也毫无意义了.已多年.net工作经验,看书不如直接实际上手来得快, ...

  4. 在vs2015上使用asp.net core+ef core

    官方的文档https://docs.asp.net/en/latest/tutorials/first-mvc-app/start-mvc.html 先来看一下实现的效果

  5. EF Core 的 Code First 模式

    0 前言 本文正文第一节,会对 Code First 进行基本的介绍,以及对相关名词进行说明,读者一开始可以不用在这里消耗过多时间,可以先操作一遍例子,再回过头理解. 第二节,以一个简单的例子,展示 ...

  6. [翻译 EF Core in Action 2.4] 加载相关数据

    Entity Framework Core in Action Entityframework Core in action是 Jon P smith 所著的关于Entityframework Cor ...

  7. 第三节:EF Core上下文DbContext相关配置和生命周期

    一. 配置相关 1. 数据库连接字符串的写法 (1).账号密码:Server=localhost;Database=EFDB01;User ID=sa;Password=123456; (2).win ...

  8. Asp.net Core 通过 Ef Core 访问、管理Mysql

    本文地址:http://www.cnblogs.com/likeli/p/5910524.html 环境 dotnet Core版本:1.0.0-preview2-003131 本文分为Window环 ...

  9. EntityFramework Core技术线路(EF7已经更名为EF Core,并于2016年6月底发布)

    官方文档英文地址:https://github.com/aspnet/EntityFramework/wiki/Roadmap 历经延期和更名,新版本的实体框架终于要和大家见面了,虽然还有点害羞.请大 ...

随机推荐

  1. 关于处理java.lang.IllegalArgumentException at java.sql.Date.getHours异常

    https://segmentfault.com/a/1190000016937108

  2. Python对象迭代与反迭代相关问题与解决技巧

      1.如何实现可迭代对象和迭代器对象(1)¶ In [1]: # 列表和字符串都是可迭代对象 l = [1,2,3,4] In [2]: s = 'abcde' In [3]: for x in l ...

  3. eclipse中的web项目部署路径

    elipse添加了server之后,如果不对tomcat的部署路径做更改,则eclipse默认对工程的部署在 eclipse-workspace\.metadata.plugins\org.eclip ...

  4. Ubuntu---添加输入法

    摘要:Ubuntu 在刚刚安装好之后,默认是不支持直接输入中文的,所以我们需要安装支持中文的输入法.网络上面一般推荐使用的输入法是 Fcitx(小企鹅输入法),我们今天就来安装和配置它. step1: ...

  5. zabbix学习笔记----安装----2019.03.26

    1.zabbix官方yum源地址:repo.zabbix.com 2.安装zabbix server zabbix server使用mysql作为数据库,在zabbix 3.X版本,安装zabbix- ...

  6. LAB6 SOAP

    有web服务的,需要Deploy一下才能跑 通过ls看所有文件的所在地,cd进入对应文件夹,才可以编译 javac 编译,Java是执行 URL必须是WSDL文件点进去里面的:http://local ...

  7. 双硬盘,win10安装到固态盘

    1.PE下格式化固态盘的系统盘 2.打开DG分区工具,查看固态盘的系统盘是否为激活状态,红色为激活,如果不是,激活一下 3.用windows安装器,或者hdd安装win10到固态盘 4.bios中启动 ...

  8. Oracle lag()/lead() over()分析函数

    with tmp as(select '1' id ,'aa' name ,'22' age from dual union allselect '2' id ,'bb' name ,'20' age ...

  9. 使用tcpcopy复制线上流量进行测试

    使用tcpcopy复制线上流量进行测试 online server 线上服务所在机器 10.136.11.4 部署tcpcopy sudo /usr/local/tcpcopy/sbin/tcpcop ...

  10. Gmapping笔记

    2D-slam 激光slam: 开源代码的比较HectorSLAM Gmapping KartoSLAM CoreSLAM LagoSLAM 作者:kint_zhao 原文:https://blog. ...