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
以上!