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引用:
1 2 3 4 | Microsoft.EntityFrameworkCore.Sqlite Microsoft.EntityFrameworkCore.Design Microsoft.EntityFrameworkCore.Tools.DotNet |
startup.cs中添加代码:
1 | 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
代码类似:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | 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.的错误
1 2 3 4 5 | 只需要加上-c 或者 -Context add-migration sqlserverdb -c SqlServerDbContext update-database -Context SqlServerDbContext |
三:mysql迁移
mysql迁移需要添加nuget:Pomelo.EntityFrameworkCore.MySql和Pomelo.EntityFrameworkCore.MySql.Design和Microsoft.EntityFrameworkCore.Tools
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | 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); } |
1 2 3 | add-migration mysqlserverdb -c MySqlDbContextDemo update-database -Context MySqlDbContextDemo |
以上!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了