ef core 相关
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:
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 相关的更多相关文章
- EF Core 相关的千倍性能之差: AutoMapper ProjectTo VS Mapster ProjectToType
在前两天遇到 .NET Core 中 EF Core 的异步与同步查询的百倍性能之差(详情之前的博文)之后,这两天又遇到了 AutoMapper ProjectTo<T> 与 Mapste ...
- asp.net core+ef core
asp.net core+ef core 官方的文档https://docs.asp.net/en/latest/tutorials/first-mvc-app/start-mvc.html 先来看一 ...
- .Net Core2.2 + EF Core + DI,三层框架项目搭建教程
笔记: 近两年.Net Core发展的很快,目前最新版为3.0预览版,之前在网上买了一本1.1版书籍都还没来得及看呢,估计现在拿出来看也毫无意义了.已多年.net工作经验,看书不如直接实际上手来得快, ...
- 在vs2015上使用asp.net core+ef core
官方的文档https://docs.asp.net/en/latest/tutorials/first-mvc-app/start-mvc.html 先来看一下实现的效果
- EF Core 的 Code First 模式
0 前言 本文正文第一节,会对 Code First 进行基本的介绍,以及对相关名词进行说明,读者一开始可以不用在这里消耗过多时间,可以先操作一遍例子,再回过头理解. 第二节,以一个简单的例子,展示 ...
- [翻译 EF Core in Action 2.4] 加载相关数据
Entity Framework Core in Action Entityframework Core in action是 Jon P smith 所著的关于Entityframework Cor ...
- 第三节:EF Core上下文DbContext相关配置和生命周期
一. 配置相关 1. 数据库连接字符串的写法 (1).账号密码:Server=localhost;Database=EFDB01;User ID=sa;Password=123456; (2).win ...
- Asp.net Core 通过 Ef Core 访问、管理Mysql
本文地址:http://www.cnblogs.com/likeli/p/5910524.html 环境 dotnet Core版本:1.0.0-preview2-003131 本文分为Window环 ...
- EntityFramework Core技术线路(EF7已经更名为EF Core,并于2016年6月底发布)
官方文档英文地址:https://github.com/aspnet/EntityFramework/wiki/Roadmap 历经延期和更名,新版本的实体框架终于要和大家见面了,虽然还有点害羞.请大 ...
随机推荐
- vue axios跨域
现在应用都是前后端分离,这也造成前端在调用接口时出现跨域问题,在控制台会这样提示 ,如果有类似于此图的提示,就已经表明你的接口调用出现了跨域问题,此文章是我对于vue跨域其中一种方式的一些经验,如果错 ...
- 在同时满足if 和 else 条件的情况下,输出所需的内容。
请问划线处填什么内容,可以输出 "Hello World!"?if(__________){ printf("Hello ");}else{ pri ...
- spring boot 常见的第三方集成
spring boot基于1.x. 一 集成redis 1.1 配置 spring.redis.host = localhost spring.redis.port = 6379 spring.red ...
- 配置ESP8266 NONOS SDK时由于工具链版本差异引发的故障
前几天部署ESP8266_NONOS_SDK时遇到了一个看似奇怪的问题,描述如下: examples例程可以通过编译,但烧写到ESP8266模块后,程序无法正常运行,编译和烧写的相关配置均无误.在bo ...
- Cocos2dx开发之运行与渲染流程分析
学习Cocos2dx,我们都知道程序是由 AppDelegate 的方法 applicationDidFinishLaunching 开始,在其中做些必要的初始化,并创建运行第一个 CCScene 即 ...
- 从零开始学spring cloud(十一) -------- hystrix监控
一.官方文档阅读 服务启动后,可以通过/health和hystrix.stream查看效果,实际上,访问上述两个地址,会出现404,这是因为spring boot版本的问题, 我在这里使用的sprin ...
- Scrapy简单入门及实例讲解
Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 其可以应用在数据挖掘,信息处理或存储历史数据等一系列的程序中.其最初是为了页面抓取 (更确切来说, 网络抓取 )所设计的, 也可以 ...
- 阅读笔记:JAVA - chapter 1 & 2
static 即使没有创建对象,也能调用这个方法. 当Static method, static变量有定义,不同对象将指向同一存储空间,将其初始化. 存储方式 寄存器 堆栈:对象引用,需要知道存活多久 ...
- python day03_ 文件处理
一.文件操作的基本流程 计算机操作文件的过程 #1. 打开文件,得到文件句柄并赋值给一个变量 #2. 通过句柄对文件进行操作 #3. 关闭文件 1.文件的打开过程 # f被程序持有,文件被操作系统持有 ...
- netcore发布到 iis 设置 部署 环境 变量
原文链接:https://www.cnblogs.com/Ambre/p/9646445.html 打开IIS,选择本机,找到管理-配置编辑器 1:打开IIS,选择本机,找到管理-配置编辑器 2.节选 ...