本文章是根据 微软MVP solenovex(杨旭)老师的视频教程编写而来,再加上自己的一些理解。

视频教程地址:https://www.bilibili.com/video/BV1xa4y1v7rR

GitHub源码:https://github.com/hllive/LearnEFCore3.1

1、概述

如何生成数据库以及后来发生变化进行迁移

生成迁移的流程

  • 1、创建Model相当于是要映射到数据库中的表
  • 2、创建Migration迁移文件(对源码版本控制友好)
  • 3、使用Migration迁移文件来生成数据库或生成脚本

执行要求

AppDbContext 这个类是在Data类库项目中,而Data项目类型是一个类库,想让EFCore生成数据库或数据迁移的话,它必须有一个可执行文件,所以它这一个项目是不能执行的。

那么就得需要依靠【Web应用程序】,它能生成可执行文件,就得通过它来生成数据库。

除此之外,Migration还所需的安装库,(这两个库在上节中已经安装)

  • 1、Microsoft.EntityFrameworkCore.Design
  • 2、Microsoft.EntityFrameworkCore.Tools

安装好包后需要执行一些迁移用到的命令,迁移命令需要在【程序包管理器控制台】中执行;怎么打开程序包管理器控制台:菜单中的【视图】=>【其他窗口】=>【程序包管理器控制台】

在控制台中的【默认项目】选为Data,也就是包含AppDbContext类的项目



通过执行以下命令可以查看帮助

get-help entityframework

常用的两个命令

  • Add-Migration  添加一个迁移文件
  • Update-Database  把迁移文件应用到数据库,执行数据库的更新或创建

2、执行迁移

add-migration inital

inital是添加迁移文件的命名(可以自定义)

执行遇到以下错误



解决方案:将WebApi应用程序设为启用项目,选中【WebApi项目】右击选择【设为启用项目】

再执行又遇到以下错误



解决方案:这个提示是说在WebApi项目中没有安装Microsoft.EntityFrameworkCore.Design,我们在WebApi项目上安装Microsoft.EntityFrameworkCore.Design包就可以了

看到以下情况这就是执行成功了



执行成功后在Data项目生成Migrations文件夹



第一个文件叫xxxx_inital文件就是我们命名的迁移文件

xxxxModelSnapshot相当于是一个快照,这个文件非常重要,不能手动去改,EFCore使用这个文件来追踪当前所有Model的变更状态

3、生成数据库或脚本

  • 1、Update-Database  将数据库更新为指定的迁移,可以添加参数-verbose查看执行过程中的一些明细
  • 2、Script-Migration  从迁移文件中生成一个脚本(通常在生产环境中使用)执行命令后会自动打开生成的脚本文件



看到Done结果就说明已经生成和更新数据库成功,通过【SQL Serve对象资源管理器】可以查看生成后的数据库的情况。

这种先写Model再生成数据的办法叫Code Frist(代码优先)

博客文章可以转载,但不可以声明为原创

2、Entity Framework Core 3.1入门教程-创建数据库和迁移的更多相关文章

  1. 1、Entity Framework Core 3.1入门教程-概述和准备工作

    本文章是根据 微软MVP solenovex(杨旭)老师的视频教程编写而来,再加上自己的一些理解. 视频教程地址:https://www.bilibili.com/video/BV1xa4y1v7rR ...

  2. 3、Entity Framework Core 3.1入门教程-设定字段属性

    本文章是根据 微软MVP solenovex(杨旭)老师的视频教程编写而来,再加上自己的一些理解. 视频教程地址:https://www.bilibili.com/video/BV1xa4y1v7rR ...

  3. 10、Entity Framework Core 3.1入门教程-执行原生SQL

    本文章是根据 微软MVP solenovex(杨旭)老师的视频教程编写而来,再加上自己的一些理解. 视频教程地址:https://www.bilibili.com/video/BV1xa4y1v7rR ...

  4. ASP.NET Core 入门教程 8、ASP.NET Core + Entity Framework Core 数据访问入门

    一.前言 1.本教程主要内容 ASP.NET Core MVC 集成 EF Core 介绍&操作步骤 ASP.NET Core MVC 使用 EF Core + Linq to Entity ...

  5. ASP.NET Core 入门笔记9,ASP.NET Core + Entity Framework Core 数据访问入门

    一.前言 1.本教程主要内容 ASP.NET Core MVC 集成 EF Core 介绍&操作步骤 ASP.NET Core MVC 使用 EF Core + Linq to Entity ...

  6. Entity Framework Core 2.0 入门简介

    不多说废话了, 直接切入正题. EF Core支持情况 EF Core的数据库Providers: 此外还即将支持CosmosDB和 Oracle. EFCore 2.0新的东西: 查询: EF.Fu ...

  7. Entity Framework Core 2.0 入门

    该文章比较基础, 不多说废话了, 直接切入正题. 该文分以下几点: 创建Model和数据库 使用Model与数据库交互 查询和保存关联数据 EF Core支持情况 EF Core的数据库Provide ...

  8. Entity Framework 6.x - Code First 默认创建数据库的位置

    在集成DbContext的派生类中的构造函数里,如果没有指定配置文件中的数据库连接字符串的name,默认就是: Data Source=(localdb)\MSSQLLocalDB;Initial C ...

  9. ABP 教程文档 1-1 手把手引进门之 ASP.NET Core & Entity Framework Core(官方教程翻译版 版本3.2.5)

    本文是ABP官方文档翻译版,翻译基于 3.2.5 版本 官方文档分四部分 一. 教程文档 二.ABP 框架 三.zero 模块 四.其他(中文翻译资源) 本篇是第一部分的第一篇. 第一部分分三篇 1- ...

随机推荐

  1. 第一部分_Mac技巧

    原文是"池建强"的微信文章,公众号为"MacTalk" 第一天 直接在终端里输入 $ say "英文单词",Mac就会拼读该单词 第二天 使 ...

  2. vue多个路由复用同一个组件的跳转问题(this.router.push)

    因为router-view传参问题无法解决,比较麻烦. 所以我采取的是@click+this.router.push来跳转 但是现在的问题是跳转后,url改变了,但是页面的数据没有重新渲染,要刷新才可 ...

  3. 不想得手指关节炎?帮你提炼IDEA常用代码补全操作

    一.常用的代码补全操作 1..for和.fori(for 循环遍历) 输入args.for回车(args是一个数组或集合类),则会生成for循环遍历: 输入args.fori回车,则会生成带有索引的f ...

  4. PHP array_walk_recursive() 函数

    实例 对数组中的每个元素应用用户自定义函数: <?phpfunction myfunction($value,$key){echo "The key $key has the valu ...

  5. PHP fread() 函数

    定义和用法 fread() 函数读取打开的文件. 函数会在到达指定长度或读到文件末尾(EOF)时(以先到者为准),停止运行. 该函数返回读取的字符串,如果失败则返回 FALSE. 语法 string ...

  6. PHP number_format() 函数

    实例 格式化数字: <?php高佣联盟 www.cgewang.comecho number_format("1000000")."<br>" ...

  7. intel:spectre&Meltdown侧信道攻击(五)—— DRAM address mapping

    前面介绍了row hammer,理论上很完美,实际操作的时候会面临很尴尬的问题:内存存储数据最小的单位是cell(就是个电容,充电是1,放电是0),无数个横着的cell组成row,无数个竖着的cell ...

  8. 阿里云Redis的开发规范

    作者:付磊-起扬 来源:https://yq.aliyun.com/articles/531067 本文主要介绍在使用阿里云Redis的开发规范,从下面几个方面进行说明. 键值设计 命令使用 客户端使 ...

  9. AutoMapper 9.0的改造

    AutoMapper于2019.8.12升级9.0 从此不再支持静态的对象转换 自己琢磨了一下,写了一套扩展 官方链接如下 https://github.com/AutoMapper/AutoMapp ...

  10. 分布式任务调度平台 → XXL-JOB 实战

    开心一刻 老师:谁知道鞭炮用英语怎么说? 甲:老师!老师!我知道,鞭炮的英文是pilipala. 老师:那闪电呢? 乙:kucha kucha 老师:那舞狮呢? 丙:dong dong qiang 老 ...