最近一直在捣鼓.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添加一个类再次更新时需要指定到具体的表名,不然会提示原来的表已经存在,或者删除原来的数据表(不推荐)。

.NET Core中使用EF Core连接MySQL的更多相关文章

  1. ASP.NET Core 中使用EF Core 将实体映射到数据库表的方法(SQL Server)

    前段时间听过一个关于使用ASP.NET Core建立项目的视频.其中使用EF Core映射到数据库的部分是按部就班地学习.今天自己建立项目时,有些步骤已经有一些遗忘.所以写下这篇文章,顺便理清思路. ...

  2. 在ASP.NET Core中通过EF Core实现一个简单的全局过滤查询

    前言 不知道大家是否和我有同样的问题: 一般在数据库的设计阶段,会制定一些默认的规则,其中有一条硬性规定就是一定不要对任何表中的数据执行delete硬删除操作,因为每条数据对我们来说都是有用的,并且是 ...

  3. ASP.NET Core中使用EF Core(MySql)Database First

    ⒈创建数据库,在数据中执行以下脚本. CREATE DATABASE Blogging; USE Blogging; CREATE TABLE Blog ( BlogId int not null P ...

  4. ASP.NET Core中使用EF Core(MySql)Code First

    ⒈添加依赖 MySql.Data.EntityFrameworkCore ⒉在appsettings.json配置文件中配置数据库连接字符串 { "Logging": { &quo ...

  5. 万字长文,带你彻底理解EF Core5的运行机制,让你成为团队中的EF Core专家

    在EF Core 5中,有很多方式可以窥察工作流程中发生的事情,并与该信息进行交互.这些功能点包括日志记录,拦截,事件处理程序和一些超酷的最新出现的调试功能.EF团队甚至从Entity Framewo ...

  6. [翻译 EF Core in Action 1.10] 应该在项目中使用EF Core吗?

    Entity Framework Core in Action Entityframework Core in action是 Jon P smith 所著的关于Entityframework Cor ...

  7. 使用EF CodeFirst连接MySql数据库

    如何使用EF CodeFirst连接MySql数据库? 我们这篇文章介绍怎么使用EF连接MySql 作者的环境 VS2017.Win10.MySql5.x 前言 一般在EF中,默认是使用SqlServ ...

  8. Asp.net core下利用EF core实现从数据实现多租户(1)

    前言 随着互联网的的高速发展,大多数的公司由于一开始使用的传统的硬件/软件架构,导致在业务不断发展的同时,系统也逐渐地逼近传统结构的极限. 于是,系统也急需进行结构上的升级换代. 在服务端,系统的I/ ...

  9. Asp.net core下利用EF core实现从数据实现多租户(3): 按Schema分离 附加:EF Migration 操作

    前言 前段时间写了EF core实现多租户的文章,实现了根据数据库,数据表进行多租户数据隔离. 今天开始写按照Schema分离的文章. 其实还有一种,是通过在数据表内添加一个字段做多租户的,但是这种模 ...

随机推荐

  1. canvas 实现圆环效果

    var race = document.getElementById('race'); var cxt = race.getContext('2d'); var ang = 0; var speed ...

  2. System.load()与System.loadLibrary()

    Java load 和 loadlibrary方法的区别 1.  相同点: 两个方法都是用来装载dll文件,不论是JNI库文件还是非JNI库文件.本地方法在被调用时都需要通过这两发方法之一将其加载至内 ...

  3. 42.OC中instancetype与id的区别

    区别: 在ARC(Auto Reference Count)环境下: instancetype用来在编译期确定实例的类型,而使用id的话,编译器不检查类型,运行时检查类型 在MRC(Manual Re ...

  4. 威伦TK6070iQ触摸屏的使用

    A.TK6070iQ只支持U盘互相倒腾. TK6070iQ有2个串口Com1 (232) Com2 (485) U盘上传 需要选择COM2(485),因为上传后是PLC与触摸屏通过485通讯,协议选s ...

  5. 类型转化&WCF不同binding的区别

    需要使用队列时并且涉及多线程时使用ConcurrentQueue 这个性内比自己使用Queue并且配合lock要好很多 calcFactory = new ChannelFactory<ICal ...

  6. c# 二维list排序和计时

    using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using S ...

  7. Effective C++ 随笔(2)

    条款5 了解c++默默编写并调用哪些函数 编译器自动生成的copy 构造函数,copy赋值操作符,析构函数,构造函数,这些都是public和inline的,此处inline的意思是他们的定义都是在头文 ...

  8. Vsftpd完全攻略(三)基于系统用户支持ftp上传 访问和vsftp安全设置

    原文链接:http://viong.blog.51cto.com/844766/261342 1.关闭匿名用户登录 ftp支持匿名登录是不安全,所以要禁止匿名ftp登录 在/etc/vsftpd/vs ...

  9. 20145232 韩文浩 《Java程序设计》第9周学习总结

    教材学习内容总结 学习目标 了解JDBC架构 掌握JDBC架构 掌握反射与ClassLoader 了解自定义泛型和自定义枚举 会使用标准注解 JDBC标准主要分为两个部分:JDBC应用程序开发者接口和 ...

  10. How to resolve "your security settings have blocked an untrusted application from running" in Mac

    If you encounter the error "your security settings have blocked an untrusted application from r ...