Entity Framework Core生成数据库表

作者:.NET开发菜鸟 时间:2024-01-15 18:09:29 

一、引言

生成数据库表有下面的三种方式:

  • 代码生成。

  • 程序包管理器控制台迁移。

  • 命令行迁移。

下面分别介绍上面的三种方法。

二、具体示例

1、代码生成

在程序里面执行下面的代码可以在运行时生成数据库:

dbContext.Database.EnsureCreated()

其中dbContext是数据上下文的实例对象。看下面的代码:

using EFCore.Data;
using System;

namespace EFCore.Con
{
   class Program
   {
       static void Main(string[] args)
       {
           Console.WriteLine("Hello World!");
           // 实例化数据上下文对象
           EFDbContext dbContext = new EFDbContext();
           // 生成数据库
           bool tfTrue = dbContext.Database.EnsureCreated();
           if (tfTrue)
           {
               Console.WriteLine("数据库创建成功!");
           }
           else
           {
               Console.WriteLine("数据库创建失败!");
           }

Console.ReadKey();
       }
   }
}

运行程序,查看效果:

Entity Framework Core生成数据库表

提示创建成功,我们去数据库查看,发现会自动创建数据库,并且添加了表:

Entity Framework Core生成数据库表

这种方式只能执行一次,如果再次执行,就会提示创建数据库失败。

2、程序包管理器控制台迁移

使用程序包管理器控制台迁移的方式分为三个步骤。

1、安装Microsoft.EntityFrameworkCore.Tools包

由于迁移需要使用到Microsoft.EntityFrameworkCore.Tools包,所以先要在EFCore.Data类库项目上安装这个包,直接在NuGet里面安装即可。

这里是把EFCore安装在一个单独的类库项目里,所以作为启动项的控制台程序也要安装这个包。

2、添加迁移命令

使用下面的命令可以生成一个迁移:

Add-Migration Init_First

其中Init_First是为这次迁移起的一个名称,如下图所示:

Entity Framework Core生成数据库表

执行完迁移命令以后,会自动生成几个文件:

Entity Framework Core生成数据库表

  • 20200224163036_Init_First.cs:是针对本次迁移生成的文件。每次迁移都会生成一个对应的迁移文件。里面有一个Up方法和一个Down方法,Up方法表示要执行的操作,Down方法相当于回滚,如果需要还原到上一个状态,就会执行Down方法。

  • EFDbContextModelSnapshot.cs:生成的配置文件。只会生成一次。

3、更新数据库

执行完上面的迁移命令,执行下面的命令就可以更新到数据库:

Update-Database

如下图所示:

Entity Framework Core生成数据库表

这样就会自动生成数据库。

3、命令行迁移

我们可以在PowerShell或者CMD命令行窗口里面进行迁移,使用命令行迁移分为下面的两个步骤。

1、添加迁移

首先我们要进入EFCore.Data目录下面,然后执行下面的命令添加迁移:

dotnet ef migrations add Initial

如下图所示:

Entity Framework Core生成数据库表

迁移之后同样会生成上面所讲的文件。 

2、更新数据库

执行下面的命令会将配置更新到数据库:

dotnet ef database update

如下图所示:

Entity Framework Core生成数据库表

执行成功以后就会生成数据库。

三、总结

上面介绍了三种生成数据库表的方式,代码生成的方式适合于控制台程序,这种方式不太常用。尤其是在Web项目里面,经常使用第二种和第三种方式。

来源:https://www.cnblogs.com/dotnet261010/p/12359767.html

标签:Entity,Framework,Core,数据库,表
0
投稿

猜你喜欢

  • git 优雅的撤销中间某次提交方法

    2023-12-27 11:12:50
  • php之redis短线重连案例讲解

    2023-06-12 13:16:04
  • SQL Server管理 这些你懂吗?

    2011-07-01 13:40:23
  • Python对接六大主流数据库(只需三步)

    2022-04-25 21:51:55
  • mysql慢查询日志轮转_MySQL慢查询日志实操

    2024-01-26 05:54:14
  • Python使用回溯法子集树模板解决爬楼梯问题示例

    2022-05-30 17:38:54
  • Git常用命令介绍

    2022-08-14 03:42:46
  • 10条影响CSS渲染速度的写法与建议

    2008-09-09 22:02:00
  • 亚马逊购物用户体验分析(三)

    2009-10-25 12:53:00
  • @ResponseBody 和 @RequestBody 注解的区别

    2024-04-16 09:35:00
  • 深入mysql外键关联问题的详解

    2024-01-16 09:19:44
  • mysql中关键词exists的用法实例详解

    2024-01-20 18:41:25
  • Python匹配中文的正则表达式

    2022-03-21 18:05:50
  • bootstrap3 兼容IE8浏览器!

    2023-07-02 05:18:58
  • python基础教程项目四之新闻聚合

    2021-10-03 01:31:33
  • python配置文件写入过程详解

    2021-02-06 01:46:19
  • js检测浏览器语种,适合于多语言版本的站点

    2007-09-12 19:16:00
  • mysql 修改用户密码图文介绍

    2024-01-21 13:39:51
  • Vue登录拦截 登录后继续跳转指定页面的操作

    2024-05-28 15:48:14
  • Golang验证器之validator是使用详解

    2024-01-29 23:40:28
  • asp之家 网络编程 m.aspxhome.com