创建ASP.NET Core MVC应用程序(2)-利用MySQL Connector NET连接到MySQL
创建ASP.NET Core MVC应用程序(2)-利用MySQL Connector NET连接到MySQL
用惯.NET的研发人员都习惯性地使用SQLServer作为数据库。然而.NET Core都玩开源了,那么本文我就采用MySQL数据库。
安装MySQL
首先从官网下载MySQL安装包。在Mac下会安装到/usr/local/mysql/bin/mysql文件目录下。

Mac下安装完成之后可以在系统偏好设置查看到MySQL:


然后将MySQL路径加入到环境变量之中:
- 打开终端,输入如下命令,进入到~文件夹:
cd ~
- 输入如下命令,以创建一个文件:
touch .bash_profile
touch命令有两个功能:1)用于把已存在文件的时间标签更新为系统当前的时间(默认方式),它们的数据将原封不动地保留下来。2)二是用来创建新的空文件。
- 输入如下命令,以打开该文件:
open -e .bash_profile
open命令是Mac OS专用的命令行,用于打开文件、目录或执行程序。就等同于在命令行模式下,重复图形界面“双击”的动作。
可以使用-a选项要求自行选择打开的程序,或使用-e强制在TextEdit中编辑此文件。
在TextEdit中打开该文件,如果没有配置过环境变量,则会是一个空白文档。在里面输入:“export PATH=${PATH}:/usr/local/mysql/bin”即可。

这里顺便贴一张最近与MySQL之父Michael "Monty" Widenius大神的合影(其实MySQL的"My"是命名来自于Monty的女儿My)。
膜拜一下大神,沾一点编程的灵气。

配置连接字符串
打开appsettings.json,添加MySQL的连接字符串信息,此处使用MySQL的示例数据库sakila。类似于SQLServer的示例数据库AdventureWorks、Northwind。
{
"Logging": {
"IncludeScopes": false,
"LogLevel": {
"Default": "Debug",
"System": "Information",
"Microsoft": "Information"
}
},
"ConnectionStrings": {
"MyConnection": "server=localhost;userid=root;pwd=(<你的密码>);port=3306;database=sakila;sslmode=none;"
}
}
添加MySQL相关依赖项
首先在project.json文件中添加EntityFrameworkCore依赖项,添加MySQL Connector for .NET Core引用;并在buildOptionssection里面指定将appsettings.json复制到output里面。



最终的文件结果类似于这样:
{
"dependencies": {
"Microsoft.NETCore.App": {
"version": "1.0.1",
"type": "platform"
},
"Microsoft.AspNetCore.Diagnostics": "1.0.0",
"Microsoft.AspNetCore.Mvc": "1.0.1",
"Microsoft.AspNetCore.Razor.Tools": {
"version": "1.0.0-preview2-final",
"type": "build"
},
"Microsoft.AspNetCore.Routing": "1.0.1",
"Microsoft.AspNetCore.Server.IISIntegration": "1.0.0",
"Microsoft.AspNetCore.Server.Kestrel": "1.0.1",
"Microsoft.AspNetCore.StaticFiles": "1.0.0",
"Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0",
"Microsoft.Extensions.Configuration.Json": "1.0.0",
"Microsoft.Extensions.Configuration.CommandLine": "1.0.0",
"Microsoft.Extensions.Logging": "1.0.0",
"Microsoft.Extensions.Logging.Console": "1.0.0",
"Microsoft.Extensions.Logging.Debug": "1.0.0",
"Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0",
"Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0",
"MySql.Data.Core": "7.0.4-ir-191",
"MySql.Data.EntityFrameworkCore": "7.0.4-ir-191"
},
"tools": {
"BundlerMinifier.Core": "2.0.238",
"Microsoft.AspNetCore.Razor.Tools": "1.0.0-preview2-final",
"Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final"
},
"frameworks": {
"netcoreapp1.0": {
"imports": [
"dotnet5.6",
"portable-net45+win8"
]
}
},
"buildOptions": {
"emitEntryPoint": true,
"preserveCompilationContext": true,
"copyToOutput": {
"include": "appsettings.json"
}
},
"runtimeOptions": {
"configProperties": {
"System.GC.Server": true
}
},
"publishOptions": {
"include": [
"wwwroot",
"**/*.cshtml",
"appsettings.json",
"web.config"
]
},
"scripts": {
"precompile": ["dotnet bundle"],
"prepublish": ["bower install"],
"postpublish": ["dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%"]
},
"tooling": {
"defaultNamespace": "MyFirstApp"
}
}
最后运行dotnet restore命令,该命令将会下载所有需要的依赖项。
添加MySQL示例数据库Sakila
这里我们将使用MySQL示例数据库sakila作为演示。
- 将下载的压缩包解压到临时路径,通过mysql命令行连接到MySQL Server:
mysql -u root -p
- 通过如下命令执行sakila-schema.sql来创建数据库结构:
SOURCE /Users/CharlieChu/Desktop/sakila-db/sakila-schema.sql;
- 通过如下命令执行sakila-data.sql来填充上个命令创建的数据库结构:
SOURCE /Users/CharlieChu/Desktop/sakila-db/sakila-data.sql;
- 利用如下命令确认已经安装成功:
USE sakila;
SHOW TABLES;
如下是执行的具体效果:



获取MySQL数据库数据
从Sakila数据库Category表获取信息:
public static void Main(string[] args)
{
var builder = new ConfigurationBuilder()
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);
var configuration = builder.Build();
string connectionString = configuration.GetConnectionString("MyConnection");
MySqlConnection connection = new MySqlConnection
{
ConnectionString = connectionString
};
connection.Open();
MySqlCommand command = new MySqlCommand("SELECT * FROM sakila.customer;", connection);
using (MySqlDataReader reader = command.ExecuteReader())
{
System.Console.WriteLine("Customer Id\t\tFirst Name\t\tLast Name\t\tEmail");
while (reader.Read())
{
string row = $"{reader["customer_id"]}\t\t{reader["first_name"]}\t\t{reader["last_name"]}\t\t{reader["email"]}";
System.Console.WriteLine(row);
}
}
connection.Close();
System.Console.ReadKey();
}
运行dotnet run即可查看具体的数据。

参考文档
个人博客
创建ASP.NET Core MVC应用程序(2)-利用MySQL Connector NET连接到MySQL的更多相关文章
- 创建ASP.NET Core MVC应用程序(6)-添加验证
创建ASP.NET Core MVC应用程序(6)-添加验证 DRY原则 DRY("Don't Repeat Yourself")是MVC的设计原则之一.ASP.NET MVC鼓励 ...
- 创建ASP.NET Core MVC应用程序(5)-添加查询功能 & 新字段
创建ASP.NET Core MVC应用程序(5)-添加查询功能 & 新字段 添加查询功能 本文将实现通过Name查询用户信息. 首先更新GetAll方法以启用查询: public async ...
- 创建ASP.NET Core MVC应用程序(4)-添加CRUD动作方法和视图
创建ASP.NET Core MVC应用程序(4)-添加CRUD动作方法和视图 创建CRUD动作方法及视图 参照VS自带的基架(Scaffold)系统-MVC Controller with view ...
- 创建ASP.NET Core MVC应用程序(3)-基于Entity Framework Core(Code First)创建MySQL数据库表
创建ASP.NET Core MVC应用程序(3)-基于Entity Framework Core(Code First)创建MySQL数据库表 创建数据模型类(POCO类) 在Models文件夹下添 ...
- 创建ASP.NET Core MVC应用程序(1)-添加Controller和View
创建ASP.NET Core MVC应用程序(1)-添加Controller和View 参考文档:Getting started with ASP.NET Core MVC and Visual St ...
- 跨平台应用集成(在ASP.NET Core MVC 应用程序中集成 Microsoft Graph)
作者:陈希章 发表于 2017年6月25日 谈一谈.NET 的跨平台 终于要写到这一篇了.跨平台的支持可以说是 Office 365 平台在设计伊始就考虑的目标.我在前面的文章已经提到过了,Micro ...
- 【翻译】使用Visual Studio创建Asp.Net Core MVC (一)
This tutorial will teach you the basics of building an ASP.NET Core MVC web app using Visual Studio ...
- ASP.NET Core MVC应用程序中的后台工作任务
在应用程序的内存中缓存常见数据(如查找)可以显着提高您的MVC Web应用程序性能和响应时间.当然,这些数据必须定期刷新. 当然你可以使用任何方法来更新数据,例如Redis中就提供了设定缓存对象的生命 ...
- Entity Framework Core系列之实战(ASP.NET Core MVC应用程序)
本示例演示在ASP.NET 应用程序中使用EF CORE创建数据库并对其做基本的增删改查操作.当然我们默认你的机器上已经安装了.NET CORE SDK以及合适的IDE.本例使用的是Visual St ...
随机推荐
- poj1002-487-3279(字符串处理)
一,题意: 中文题,不解释!二,思路: 1,处理输入的电话号码 2,排序num[]数组 3,输出三,步骤: 1,消除 -.Q.Z 三种字符,将一个电话号码转化为一个整数存如num[]数组 如:num[ ...
- linux内核分析作业8:理解进程调度时机跟踪分析进程调度与进程切换的过程
1. 实验目的 选择一个系统调用(13号系统调用time除外),系统调用列表,使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用 分析汇编代码调用系统调用的工作过程,特别是参数的传递的方 ...
- openCV C++ 代码笔记
代码片段1 cv_contourMask_step_tmp=cv_contourMask.clone(); cv::Mat maskImage; UIImageToMat(pathimg, maskI ...
- .NET跨平台:在Linux Ubuntu上编译coreclr/corefx/dnx(20150617)
编译时间:北京2015年6月17日上午 操作系统:Ubuntu 14.04.2 LTS Mono版本:Mono JIT compiler version 4.3.0 (master/3445ac5 T ...
- C++高精度计时器——微秒级时间统计
在C++中,经常需要通过计时来统计性能信息,通过统计的耗时信息,来分析性能瓶颈,通常情况下,可能毫秒级别的时间统计就足够用了,但是在毫厘必争的性能热点的地方,毫秒级别的统计还是不够的,这种情况下,就需 ...
- Mongodb 学习笔记
Mongo DB NoSql简介 MongoDB简介 在Windows平台下安装Mongo Mongo DB官方文档 MongoDB基本命令 MongoDB的默认安装路径为 C:\Program Fi ...
- Java static 的一两点使用
这篇文章是关于Java static关键字的使用,主要会介绍以下的内容: static 的概念 static的各种应用 总结 static 是什么 static 顾名思义是静态的意思.与this相对, ...
- iOS 代码规范
1 目的 统一规范XCode编辑环境下Objective-C.swift的编码风格和标准 2 适用范围 适用于所有用Objective-C,swift语言开发的项目. 3 编码规范 3.1 文件 项目 ...
- android 获取屏幕宽度和高度
// 获取屏幕宽高(方法1) int screenWidth = getWindowManager().getDefaultDisplay().getWidth(); // 屏幕宽(像素,如:480p ...
- Atitit learn by need 需要的时候学与预先学习知识图谱路线图
Atitit learn by need 需要的时候学与预先学习知识图谱路线图 1. 体系化是什么 架构 知识图谱路线图思维导图的重要性11.1. 体系就是架构21.2. 只见树木不见森林21.3. ...