1.使用Nuget安裝Pomelo.EntityFrameworkCore.MySql
注意,使用MySql.Data.EntityFrameworkCore會報錯System.TypeLoadException
HResult=0x80131522
Message=Method 'get_Info' in type 'MySql.Data.EntityFrameworkCore.Infraestructure.MySQLOptionsExtension' from assembly 'MySql.Data.EntityFrameworkCore,
Version=xxxx Culture=neutral, PublicKeyToken=c5687fc88969c44d' does not have an implementation.
Source=MySql.Data.EntityFrameworkCore
2.在appsettings.json中新增MySql數據庫鏈接:
"ConnectionStrings": {
"MySqlContext": "Server=localhost;port=3306;Database=db;user=root;password=root;SslMode=None;CharSet=utf8;"
}
地址如果寫成:localhost:3306這種格式,會報錯
3.新增繼承DbContext的上下文類
//添加模型類
public class Movies
{
public int Id { get; set; }
public string Title { get; set; }
[DataType(DataType.Date)]
public DateTime ReleaseDate { get; set; }
public string Genre { get; set; }
public decimal Price { get; set; }
}
public class MoviesContext :DbContext
{
public MoviesContext(DbContextOptions<MoviesContext> options) : base(options)
{
}
public DbSet<Movies> Movies { get; set; }
}
4.修改StartUp.cs中的ConfigureServices方法,註冊MySql服務
services.AddDbContext<MoivesContext>(options => options.UseMySql(Configuration.GetConnectionString("MySqlContext")));
5.在controller中使用
public class MoviesController : Controller
{
private readonly MoviesContext _context;
//注入MoviesContext
public MoviesController(MoviesContext context)
{
_context = context;
}
//這樣就可以使用了
public async Task<IActionResult> Index()
{
return View(await _context.Movies.ToListAsync());
}
}
注意:
1.如果使用添加基架的方式或者添加新的controller時,如果要使用已有的Context類,請一定要先註冊服務,否則會報錯:No parameterless constructor defined for type "xxx"