.Net Core 3.1連接MySql數據庫

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"

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章