本教程使用vs2017 + dotnet core2.0 + MySql5.7.19html
1.打開vs2017,文件》新建》項目,選擇Asp.Net Core Web應用程序。mysql
2.項目名稱能夠寫Test,新建的模板選擇.net core 2.0的Web應用程序。以下圖:linux
3.在項目根目錄下新建一個Models文件夾。sql
4.在Models文件夾下新建一個User類。數據庫
public class User { public int Id { get; set; } public string UserName { get; set; } public string Password { get; set; } }
5.在Models文件夾下新建一個DataContext類。json
//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。ubuntu
7.修改Startup.cs文件,用於Code First建立數據庫。這裏能夠有兩種方法,依次來講。app
7.1直接將數據庫鏈接字符串硬編碼在Startup.cs文件中ide
//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(); }
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(); }
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表情的存儲。
參考文章: