.NET Core中使用EF Core連接MySQL


最近一直在搗鼓.NET Core方面的東西,順便寫下點東西記錄下

1、打開vs2017,新建一個項目

 

2、vs會自動生成一個項目,然后打開NuGet搜索MySql.Data.EntityFrameworkCore下載

 

3、然后在Models下面新建一個Student類,然后再新建一個類繼承DbContext類

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Threading.Tasks;

namespace MySql.Test.Models
{
    public class Student
    {
        [Key]
        public int ID { get; set; }
        [Display(Name="姓名")]
        public string Name { get; set; }
        [Display(Name="年齡")]
        public int Age { get; set; }
    }
}
public class MysqlDbContext : DbContext
    {
        public MysqlDbContext(DbContextOptions<MysqlDbContext> options):base(options)
        {

        }
        //protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        //{
        //    optionsBuilder.UseMySQL("server=.;database=TestDb;user=root;password=123456;");
        //}
        //protected override void OnModelCreating(ModelBuilder modelBuilder)
        //{
        //    base.OnModelCreating(modelBuilder);
        //}

        public DbSet<Student> students { get; set; }
    }

這里說明下MySQL連接也可以寫在這里,但我們后面會注入到services中

4、然后我們在appsettings.json里添加一個連接字符串(.NET Core使用在appsettings.json里讀取配置,類似於webconfig)

{
  "Logging": {
    "LogLevel": {
      "Default": "Warning"
    }
  },
  "AllowedHosts": "*",
  "ConnectionStrings": { "MysqlConnection": "Data Source=.;Database=TestDb;User ID=root;Password=123456;pooling=true;port=3306;sslmode=none;CharSet=utf8;" }
}

5、然后打開Startup,將MySQL連接注入services,具體Startup使用可以去看相關博客

public void ConfigureServices(IServiceCollection services)
        {
            services.Configure<CookiePolicyOptions>(options =>
            {
                // This lambda determines whether user consent for non-essential cookies is needed for a given request.
                options.CheckConsentNeeded = context => true;
                options.MinimumSameSitePolicy = SameSiteMode.None;
            });


            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);

            var connection = Configuration.GetConnectionString("MysqlConnection");
            services.AddDbContext<MysqlDbContext>(options => options.UseMySQL(connection));
        }

6、然后我們就可以開始數據遷移了

在vs中的“程序包管理器控制台”中輸入如下兩個命令

Add-Migration init(執行此命令項目生成一個目錄(Migration))
Update-Database init

然后我們就可以在數據庫看到生成的數據庫以及數據表了

 

注意:如果出現錯誤提示xxxx.__EFMigrationsHistory  doesn't exist

我們需要手動在數據庫創建__EFMigrationsHistory這張表

然后再開始遷移就好了

 

最后還遇到一個問題是:如果已經數據遷移后,又在Models添加一個類再次更新時需要指定到具體的表名,不然會提示原來的表已經存在,或者刪除原來的數據表(不推薦)。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM