ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

2、Entity Framework Core 3.1入门教程-创建数据库和迁移

2020-08-26 09:01:29  阅读:229  来源: 互联网

标签:Core 执行 文件 数据库 入门教程 生成 Migration 迁移 Entity


本文章是根据 微软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(代码优先)

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

标签:Core,执行,文件,数据库,入门教程,生成,Migration,迁移,Entity
来源: https://www.cnblogs.com/hllive/p/13539378.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有