在用惯了Asp.Net Core提供的基架后,反过来想一想,貌似忘记了控制台如何去连接数据库了,因此,写一篇文章来借此巩固下并以后再来回顾时,加快步骤。

1、新建一个.Net Core控制台,然后安装Nuget包

Microsoft.EntityFrameworkCore
Microsoft.EntityFrameworkCore.Design
Pomelo.EntityFrameworkCore.MySql
Microsoft.Extensions.Configuration.Json

2、添加一个文件夹Models,并增加一个实体类Company,增加该实体类一系列属性

namespace FastConnect.Tool.Models
{
/// <summary>
/// 公司信息
/// </summary>
public class Company
{
/// <summary>
/// Id
/// </summary>
public int Id { get; set; } /// <summary>
/// 公司名称
/// </summary>
public string Name { get; set; } /// <summary>
/// 公司地址
/// </summary>
public string Address { get; set; }
}
}

3、再增加一个配置文件appsettings.json,按照数据库具体配置去弄,比如接口,用户名密码等,并且本次想用的数据库名。需右键设置该文件的输出方式为始终复制。

{
"ConnectionStrings": {
"Default": "Server=xxx;Database=fastconnectdb;Port=10143;charset=utf8;uid=tester;pwd=xxx@yy;"
}
}

4、增加DbContext,并继承DbContext,该父类在EFCore中,将之前建立的类加入到该DbContext中,配置这个数据库上下文需要的连接字符串,通过配置类去读取第二步骤中的配置项文件,在OnConfiguring中使用UseMysql,该方法在Pomelo的dll中并读取其中的默认连接字符串节点。

using FastConnect.Tool.Models;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using System.IO; namespace FastConnect.Tool
{
public class FastConnectDbContext : DbContext
{
public DbSet<Company> Companys { get; set; } private IConfiguration configuration; public FastConnectDbContext()
{
configuration = new ConfigurationBuilder().SetBasePath(Directory.GetCurrentDirectory()).AddJsonFile("appsettings.json").Build();
} protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseMySql(configuration.GetConnectionString("Default"));
}
}
}

5、在程序包管理器控制台中选择该项目,必须要选择DbContext所在项目,本次DbContext所在项目为控制台本部。

并键入如下两行,如无错误,则数据库已经生成,可以查看项目文件夹中,将会多出一个文件夹和若干文件,这是记录迁移信息的。

add-migration InitDataBase
update-database

查看数据库中,已经生成了两张表,第一张是由EFCore维护的迁移记录表,第二张是我们所建立的实体表

6、在Program.cs文件中加入一点对数据库的操作,通过using来管理数据库的连接,这种方式较为便捷,当然也可以使用其它方式来管理。

    class Program
{
static void Main(string[] args)
{
using (var dbContext = new FastConnectDbContext())
{
dbContext.Companys.Add(new Company
{
Name = "星城科技",
Address = "湖南长沙雨花区"
}); dbContext.SaveChanges(); Console.WriteLine("All Company in database:");
foreach (var company in dbContext.Companys)
{
Console.WriteLine("{0}-{1}", company.Name, company.Address);
}
Console.ReadKey();
}
}
}

7、设置当前项目为启动项目,启动查看运行效果,数据加入到数据库中,并从数据库中再次读取出来:

8、最终控制台项目结构

仓库地址:https://gitee.com/530521314/Partner.TreasureChest.git

2019-12-06,望技术有成后能回来看见自己的脚步

.Net Core控制台&EFCore连接Mysql的更多相关文章

  1. DotNetCore跨平台~EFCore连接Mysql的方式

    回到目录 在.net frameworks的ef里连接mysql我们已经测试通过了,而在dotnet core里的efCore上去连接mysql我们需要测试一下,并且在测试过程中出现了一些问题,当然最 ...

  2. .NetCore教程之 EFCore连接Mysql DBFirst模式

    一:创建EF的类库,同时将此项目设置为启动项(为Scaffold-DbContext -tables指令使用),同时安装2个包   ①Microsoft.EntityFrameworkCore.Too ...

  3. 在控制台远程连接mysql数据库时,出现ERROR 2049 (HY000)错误

    问题的原因是,你本地的数据库版本过高,而远程的数据库版本低. 解决方法:在连接时加上  --skip-secure-auth 参数就可以了. mysql -h主机 -u用户名 -p密码 --skip- ...

  4. EFCore CodeFirst 连接MySql

    一.工具及环境 Visual Studio 2017 15.4.3 MySql Navicat for MySQL 二.Entity Framwork Core 2.0 MySql Code Firs ...

  5. 如何从40亿整数中找到不存在的一个 webservice Asp.Net Core 轻松学-10分钟使用EFCore连接MSSQL数据库 WPF实战案例-打印 RabbitMQ与.net core(五) topic类型 与 headers类型 的Exchange

    如何从40亿整数中找到不存在的一个 前言 给定一个最多包含40亿个随机排列的32位的顺序整数的顺序文件,找出一个不在文件中的32位整数.(在文件中至少确实一个这样的数-为什么?).在具有足够内存的情况 ...

  6. .net core WebAPI 初探及连接MySQL

    1. 前言 笔者最近跟着微软官方文档学习.net core WebAPI,但发现其对 WebAPI 连接数据库.读取数据库方面讲得不够细致明了.写此文的目的,即实现 .net core WebAPI ...

  7. 第八节:EF Core连接MySql数据库

    一. 前提 1.安装EF Core连接MySQL的驱动,这里有两类: (1).Oracle官方出品:MySql.Data.EntityFrameworkCore (版本:8.0.17) (2).其他第 ...

  8. Spring Boot连接MySQL长时间不连接后报错`com.mysql.cj.core.exceptions.ConnectionIsClosedException: No operations allowed after connection closed.`的解决办法

    报错:com.mysql.cj.core.exceptions.ConnectionIsClosedException: No operations allowed after connection ...

  9. .NET 5/.NET Core使用EF Core 5连接MySQL数据库写入/读取数据示例教程

    本文首发于<.NET 5/.NET Core使用EF Core 5(Entity Framework Core)连接MySQL数据库写入/读取数据示例教程> 前言 在.NET Core/. ...

随机推荐

  1. SpringBoot学习(七)—— springboot快速整合Redis

    目录 Redis缓存 简介 引入redis缓存 代码实战 Redis缓存 @ 简介 redis是一个高性能的key-value数据库 优势 性能强,适合高度的读写操作(读的速度是110000次/s,写 ...

  2. cas的客户端应用是负载均衡,单点退出怎么办?

    之前的项目一直是单节点,这次在生产系统中使用了负载均衡,一个应用部署了两个节点,负载均衡策略未知.这样在使用时发现了这么一个问题:在单点退出后,应用有时候可以退出,但有时还在登陆状态,这就很郁闷了. ...

  3. Batch Normalization详解

    目录 动机 单层视角 多层视角 什么是Batch Normalization Batch Normalization的反向传播 Batch Normalization的预测阶段 Batch Norma ...

  4. 英语口语考试资料Friendships

    Friendships Remember Friendships can be complicated. When you want to get to know someone, it helps ...

  5. 月下无限连?拒绝无休止switch!

    拒绝无休止switch 一.前言 前天碰到个需求,其实很简单,就是Excel导入,Excel模板长下面这样: 按我平常的逻辑是这样做的: 用文件输入流读取Excel,根据Excel的版本生成不同的对象 ...

  6. 使用modelarts部署bert命名实体识别模型

    模型部署介绍 当我们通过深度学习完成模型训练后,有时希望能将模型落地于生产,能开发API接口被终端调用,这就涉及了模型的部署工作.Modelarts支持对tensorflow,mxnet,pytorc ...

  7. .Net core-邮件发送(同步,异步)底层代码(欢迎留言讨论)

    using MailKit.Net.Smtp;using MimeKit;using System;using System.Collections.Generic;using System.IO;u ...

  8. MySQL必知必会(Select)

    SELECT prod_name FROM products; SELECT prod_id, prod_name, prod_price FROM products; SELECT * FROM p ...

  9. 带你从头到尾捋一遍MySQL索引结构(1)

    从一个简单的表开始 create table user( id int primary key, age int, height int, weight int, name varchar(32) ) ...

  10. luogu P1731 [NOI1999]生日蛋糕 |暴力枚举

    题目背景 7月17日是Mr.W的生日,ACM-THU为此要制作一个体积为Nπ的M层 生日蛋糕,每层都是一个圆柱体. 设从下往上数第i(1<=i<=M)层蛋糕是半径为Ri, 高度为Hi的圆柱 ...