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

  

 

以上!

 

posted @ 2021-06-21 23:03  游园惊梦、  阅读(193)  评论(0编辑  收藏  举报