zoukankan      html  css  js  c++  java
  • DotNet Core 3.1 EF Core 数据库迁移(Migration)

    开发环境

    编译器:VS2019
    数据库:SqlServer 2019
    

    运行环境

    DotNet Core SDK(3.1.400)
    

    SqlServer迁移方式

    依赖包

    Microsoft.EntityFrameworkCore
    Microsoft.EntityFrameworkCore.SqlServer
    

    使用迁移命令需要的依赖包

    Microsoft.EntityFrameworkCore.Tools
    EntityFramework
    Microsoft.EntityFrameworkCore.Design
    

    迁移命令

    1.创建第一个迁移
    Add-Migration InitialCreate   
    
    2.创建数据库和架构
    Update-Database 
    

    如果在实体中需要新增CreatedTimestamp 字段

    public class Blog
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public DateTime CreatedTimestamp { get; set; }
    }
    

    执行如下命令创建新迁移:

    Add-Migration AddBlogCreatedTimestamp
    
    Update-Database
    

    如果执行Update-Database异常需要删除上一个添加的迁移命令

    删除上一个添加的迁移命令
    Remove-Migration
    

    appsettings.json配置

    新增ConnectionString节点

    {
      "Logging": {
        "LogLevel": {
          "Default": "Information",
          "Microsoft": "Warning",
          "Microsoft.Hosting.Lifetime": "Information"
        }
      },
      "AllowedHosts": "*",
      
      "ConnectionString": {
        "SqlServer": "server=.;database=NetCoreDemo;uid=sa;pwd=123"
      }
    }
    
    

    Startup.cs配置如下

    public void ConfigureServices(IServiceCollection services)
    {
        string constr = Configuration.GetSection("ConnectionString:SqlServer").Value;
        services.AddDbContext<MyDbContext>(options =>
            options.UseMySQL(connstr, m => m.MigrationsAssembly("User.API"));
    
        services.AddControllersWithViews();
    }
    

    MySql迁移方式

    依赖包

    Microsoft.EntityFrameworkCore
    Microsoft.EntityFrameworkCore.Design
    Microsoft.EntityFrameworkCore.Tools
    MySql.Data.EntityFrameworkCore
    

    appsettings.json配置

    新增ConnectionString节点

    {
      "Logging": {
        "LogLevel": {
          "Default": "Information",
          "Microsoft": "Warning",
          "Microsoft.Hosting.Lifetime": "Information"
        }
      },
      "AllowedHosts": "*",
      "ConnectionString": {
        "MySql": "Data Source=localhost;port=3306;database=NetCoreDemo;User Id=root;Password=12345"
      }
    }
    
    
    

    Startup.cs配置如下

    public void ConfigureServices(IServiceCollection services)
    {
        var constr = Configuration.GetSection("ConnectionString:MySql").Value;
        services.AddDbContext<MyDbContext>(
              options.UseMySQL(connstr, m => m.MigrationsAssembly("User.API"));
              );
    
        services.AddControllersWithViews();
    }
    

    在依次执行上述迁移命令即可

    注意执行命令时必须默认项目必须选择继承了DbContext 的那个程序集

    可能会遇到的错误:
    image

    前面加上 EntityFrameworkCore 试试

    EntityFrameworkCoreAdd-Migration InitialCreate
    
    EntityFrameworkCoreUpdate-Database 
    

    参考地址:https://docs.microsoft.com/zh-cn/ef/core/managing-schemas/migrations/?tabs=vs

  • 相关阅读:
    如何完全删除Linux应用
    IP地址获取工具类
    日期处理工具类
    Cookies的工具类
    权限管理系统学习笔记
    SpringBoot中JPA的一些基本操作
    Mysql和Java的数据类型对应表
    MySQL中的tinyint
    幂等性浅谈
    链接
  • 原文地址:https://www.cnblogs.com/imtudou/p/13664068.html
Copyright © 2011-2022 走看看