最新方法不需要第6步。MySql.Data.EntityFrameworkCore不需要安装,这个包有问题,操作数据库时会出问题。安装新版本Pomelo.EntityFrameworkCore.MySql。不需要添加映射类。
环境搭配好后直接Add-Migration 再Update-Database就会直接根据模型生成数据库相应表,但是有可能生成的string数据类型不对,它会在数据库生成longtext类型,可以在模型类里给属性加长度限制,或是生成SQL脚本,稍作修改后再找到数据库执行。
官方相关文档:https://docs.microsoft.com/zh-cn/ef/core/miscellaneous/cli/powershell#other-target-frameworks
1.新建MODEL和EF.DATAL类库
2.添加MODEL类
3.在EF操作类库中安装需要的依赖库,并配置相互间的引用 这里我用的是mysql
Microsoft.EntityFrameworkCore
Microsoft.EntityFrameworkCore.Tools
Pomelo.EntityFrameworkCore.MySql
4.在EF操作类库中添加自己的dbcontext 如:
public class MyContext:DbContext
{
public MyContext(DbContextOptions<MyContext> options) : base(options)
{
}
public DbSet<MODEL.Users> Users { get; set; }
}
5.在appsettings.json中配置SQL链接字符串 如:
"ConnectionStrings": { "MysqlConnection": "Data Source=localhost;Database=test;User ID=root;Password=12345;pooling=true;CharSet=utf8;port=3306;sslmode=none" }
6.在web层添加映射类
public class DesignTimeDbContextFactory : IDesignTimeDbContextFactory<MyContext>
{
public MyContext CreateDbContext(string[] args)
{
IConfigurationRoot configuration = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json")
.Build();
var builder = new DbContextOptionsBuilder<MyContext>();
string constr = configuration.GetConnectionString("MysqlConnection");
builder.UseMySQL(constr);
return new MyContext(builder.Options);
}
}
7.打开包管理控制台输入操作相关命令,get-help entityframeworkcore可以获取到所有相关命令。
Add-Migration Adds a new migration.
Drop-Database Drops the database.
Get-DbContext Gets information about a DbContext type.
Remove-Migration Removes the last migration.
Scaffold-DbContext Scaffolds a DbContext and entity types for a database.
Script-Migration Generates a SQL script from migrations.
Update-Database Updates the database to a specified migration.
8.在控制台的默认项目里选择ef的操作项目。输入Add-Migration添加一个迁移项。提示输入名字可随便输入
9.添加成功后,可以看到项目多出一个Migrations文件夹。这时再输入Script-Migration 获取数据库脚本。
10.复制脚本后稍作修改,只留下创建表和插入版本的sql语句,放到数据库执行后,便大功告成。之后如果有修改就使用Update-Database 来更新操作