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

  • 相关阅读:
    php设计模式-装饰器模式
    php设计模式-观察者模式
    play-with-docker搭配ffsend完成文件上传及下载(解决从docker hub拉取镜像慢问题)
    java执行命令行,以及解决卡死问题
    在docker容器中调用docker命令
    MIME 类型,ContentType
    大文件下载---之内存溢出问题解决
    OperationCenter Docker运行环境及其依赖启动脚本
    快速获取批量处理Docker镜像SQL语句
    解决达梦数据库新增大字段报错问题
  • 原文地址:https://www.cnblogs.com/imtudou/p/13664068.html
Copyright © 2011-2022 走看看