.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"

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值