DotNet Core 2.0使用MySql實現Code First


本教程使用vs2017 + dotnet core2.0 + MySql5.7.19

 

1.打開vs2017,文件》新建》項目,選擇Asp.Net Core Web應用程序

 

2.項目名稱可以寫Test,新建的模板選擇.net core 2.0的Web應用程序。如下圖:

 

3.在項目根目錄下新建一個Models文件夾。

 

4.在Models文件夾下新建一個User類。

public class User
{
    public int Id { get; set; }
    public string UserName { get; set; }
    public string Password { get; set; }
}

 

5.在Models文件夾下新建一個DataContext類。

//using Microsoft.EntityFrameworkCore;
public class DataContext:DbContext
{
    public DataContext(DbContextOptions<DataContext> options):base(options)
    {
    }
    public DbSet<User> Users { get; set; }
}

 

6.通過Nuget添加Pomelo.EntityFrameworkCore.MySql

 

7.修改Startup.cs文件,用於Code First創建數據庫。這里可以有兩種方法,依次來說。

 

7.1直接將數據庫連接字符串硬編碼在Startup.cs文件中

//using Microsoft.EntityFrameworkCore;
//using Test.Models;

public void ConfigureServices(IServiceCollection services)
{
    var connection = @"Data Source=.;Database=Test;User ID=young;Password=young;pooling=true;CharSet=utf8;port=3306;sslmode=none";
    services.AddDbContext<DataContext>(options => options.UseMySql(connection));
    services.AddMvc();
}
View Code

7.2將數據庫連接字符串放在配置文件中

appsettings.json中添加節點,代碼如下:

"ConnectionStrings": {
  "MySqlConnection": "Data Source=.;Database=Test;User ID=young;Password=young;pooling=true;CharSet=utf8;port=3306;sslmode=none"
}

Startup.cs文件中的代碼修改如下:

//using Microsoft.EntityFrameworkCore;
//using Test.Models;

public void ConfigureServices(IServiceCollection services)
{
    var connection = Configuration.GetConnectionString("MySqlConnection");
    services.AddDbContext<DataContext>(options => options.UseMySql(connection));
    services.AddMvc();
}
View Code

 

8.依次點開:工具》打開Nuget包管理器》程序包管理控制台

首先輸入Add-Migration MyFirstMigration執行;

接着輸入Update-Database執行。出現Done表示成功創建數據庫。

 

遇到的問題:

發現通過code first創建的數據庫居然不支持插入中文?

后來才發現是mysql的配置問題(我是使用ubuntu+mysql)。在/etc/mysql/my.cnf中做如下修改,添加以下紅框內的文字:

 為了方便復制粘貼,代碼就直接貼出來:

[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake

重啟mysql,sudo service mysql restart即可。

 

對問題進一步升級——讓數據庫支持emoji表情😂。

將上圖中添加的代碼,全部注釋,並且添加新的代碼,如下圖:

下面是純文字版代碼:

[client]
default-character-set=utf8mb4

[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect=’SET NAMES utf8mb4'

[mysql]
default-character-set=utf8mb4

之所以這樣改,是因為,mysql的utf8編碼的一個字符最多3個字節,但是一個emoji表情為4個字節,所以utf8不支持存儲emoji表情。但是utf8的超集utf8mb4一個字符最多能有4字節,所以能支持emoji表情的存儲。

 

參考文章:

ASP.NET Core 快速入門(實戰篇)

MySql 使用 EF Core 2.0 CodeFirst

ASP.NET Core跨平台開發從入門到實戰

Ubuntu下設置MySQL字符集為utf8

MySQL中支持emoji表情的存儲


免責聲明!

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



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