zoukankan      html  css  js  c++  java
  • NET CORE 数据库迁移

    DatabaseFirst 

    准备工作:

    一、nuget引用:

    Microsoft.EntityFrameworkCore.SqlServer

    Microsoft.EntityFrameworkCore.Tools

    Microsoft.EntityFrameworkCore.SqlServer.Design

    二、工具-----NuGet程序包管理器------程序包管理控制台

    输入:Scaffold-DbContext "server=.;database=数据库名称uid=账户;pwd=密码;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer

    之后等待。就会生成响应的实体模型

    1:准备工作

    nuget引用:

    Microsoft.EntityFrameworkCore.Sqlite
    Microsoft.EntityFrameworkCore.Design
     
    Microsoft.EntityFrameworkCore.Tools.DotNet

    startup.cs中添加代码:

     services.AddDbContext<DBSqliteContext>();
    

      

    一个net core项目。新建一个类:

    public class User
        {
            public int Id { set; get; }
    
            public string UserName { set; get; }
    
            public string Password { set; get; }
        }
    
        public class Post
        {
            public int Id { set; get; }
            public string Title { set; get; }
            public string Description { set; get; }
            public DateTime CreatedDate { set; get; }
            public int UserId { set; get; }
        }
    
        public class DBSqliteContext : DbContext
        {
    
            public DbSet<User> Users { set; get; }
    
            public DbSet<Post> Posts { set; get; }
    
            protected override void OnModelCreating(ModelBuilder modelBuilder)
            {
                base.OnModelCreating(modelBuilder);
            }
    
    
            protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
             => optionsBuilder
                 .UseSqlite(@"Data Source=blogging.db");
        }

    2:开始迁移

    首先打开 “程序包管理控制台”:

     使用“ add-migration MigrationName”命令  这个名称是自定义的。应该和类中 useSqlite中的名称一致。

    若出现  无法将“add-migration”项识别为 cmdlet、函数、脚本文件或可运行程序的名称 的错误,请看:https://www.cnblogs.com/fanlin92/p/14916342.html

    之后会生成一个Migrations文件夹,此文件夹下会生成相关的类文件。

     然后使用命令:update-database MigrationName,同样MigrationName也是自定义的,和useSqlite中的名称一致。

    之后就可以找到该数据库文件了。

    二:sqlserver迁移

    sqlserver需要添加nuget:Microsoft.EntityFrameworkCore.SqlServer和Microsoft.EntityFrameworkCore.Tools

    代码类似:

    public class SqlServerDbContext:DbContext
        {
            public DbSet<User> Users { set; get; }
    
            public DbSet<Post> Posts { set; get; }
    
            protected override void OnModelCreating(ModelBuilder modelBuilder)
            {
                base.OnModelCreating(modelBuilder);
            }
    
    
            protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
             => optionsBuilder
                 .UseSqlServer(@"server=.;database=userinfo;uid=fl;pwd=fl123");
        }
    

      如果出现:  More than one DbContext was found. Specify which one to use. Use the '-Context' parameter for PowerShell commands and the '--context' parameter for dotnet commands.的错误

    只需要加上-c 或者 -Context
    
    add-migration sqlserverdb -c SqlServerDbContext
    
    update-database -Context SqlServerDbContext
    

      

    三:mysql迁移

    mysql迁移需要添加nuget:Pomelo.EntityFrameworkCore.MySql和Pomelo.EntityFrameworkCore.MySql.Design和Microsoft.EntityFrameworkCore.Tools

    代码如下:

     public class MySqlDbContextDemo:DbContext
        {
            public DbSet<User> Users { set; get; }
    
            public DbSet<Post> Posts { set; get; }
    
            protected override void OnModelCreating(ModelBuilder modelBuilder)
            {
                base.OnModelCreating(modelBuilder);
            }
    
            //
            protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
             => optionsBuilder.UseMySql(@"Data Source=localhost;port=3306;database=NetCoreDemo;User Id=root;Password=123456",new MySqlServerVersion("1.0"));
            //.UseMySql(@"Data Source=localhost;port=3306;database=NetCoreDemo;User Id=root;Password=123456",null,null);
        }
    

      

    add-migration mysqlserverdb -c MySqlDbContextDemo
    
    update-database -Context MySqlDbContextDemo
    

      

    以上!

  • 相关阅读:
    福大软工1816 · 第六次作业
    福大软工1816 · 第五次作业
    BETA 版冲刺前准备
    Alpha 事后诸葛亮(团队)
    Alpha 答辩总结
    Alpha 冲刺 (10/10)
    Alpha 冲刺 (9/10)
    Alpha 冲刺 (8/10)
    Alpha 冲刺 (7/10)
    Alpha 冲刺 (6/10)
  • 原文地址:https://www.cnblogs.com/fanlin92/p/14916330.html
Copyright © 2011-2022 走看看