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表情的存储

转载于:https://www.cnblogs.com/chenyangsocool/p/7648294.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值