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

  • 相关阅读:
    Jenkins
    python爬虫
    git分布式版本控制
    CKA考试认证总结
    gitlab-ci 工具链
    gitlab-ci 模板库实践
    gitlab-cicd
    gitlab配置文件gitlab.rb详解
    局部变量表中的slot简述
    JVM系统线程类型
  • 原文地址:https://www.cnblogs.com/imtudou/p/13664068.html
Copyright © 2011-2022 走看看