一、添加NuGet包
添加以下两个包:
MySql.Data.EntityFrameworkCore
Microsoft.EntityFrameworkCore.Tools
二、准备数据库
创建数据库和表,假设数据库的连接字符串为:server=localhost;uid=root;pwd=password;port=3306;database=db_name;
三、自动生成实体类
1、在Visual Studio菜单中选择:工具 > NuGet包管理器 > 程序包管理器控制台
2、输入以下命令:
Scaffold-DbContext "server=localhost;uid=root;pwd=password;port=3306;database=db_name;" MySql.Data.EntityFrameworkCore -OutputDir Models
其中,最后的Models表示实体类将生成在Models这个文件夹中。
3、命令完成之后,我们看到Models文件夹中出来了一些跟表名相同的实体类,以及一个数据库名+Context的上下文类。
四、上下文注入
1、把连接字符串写到appsettings.json这个文件中,如下所示:
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"AllowedHosts": "*",
"ConnectionStrings": {
"DataConnection": "server=localhost;uid=root;pwd=password;port=3306;database=db_name;"
}
}
2、在Startup类的ConfigureServices函数中加入上下文注入:
services.AddDbContext<dataContext>(options =>options.UseMySQL(Configuration.GetConnectionString("DatabaseConnection")));
3、删除上下文类中的配置信息,清空OnConfiguring函数:
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
}
4、最后,一个在Controller中读取表数据的范例为:
[ApiController]
[Route("[controller]")]
public class TestController : ControllerBase
{
private readonly ILogger<TestController> _logger;
private readonly dataContext _dataContext;
public TestController(ILogger<TestController> logger, dataContext db)
{
_logger = logger;
_dataContext = db;
}
[HttpGet]
public IEnumerable<Student> Get()
{
return _dataContext.Set<Student>().ToList();
}
}