创建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的示例数据库AdventureWorksNorthwind

{
"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的更多相关文章

  1. 创建ASP.NET Core MVC应用程序(6)-添加验证

    创建ASP.NET Core MVC应用程序(6)-添加验证 DRY原则 DRY("Don't Repeat Yourself")是MVC的设计原则之一.ASP.NET MVC鼓励 ...

  2. 创建ASP.NET Core MVC应用程序(5)-添加查询功能 & 新字段

    创建ASP.NET Core MVC应用程序(5)-添加查询功能 & 新字段 添加查询功能 本文将实现通过Name查询用户信息. 首先更新GetAll方法以启用查询: public async ...

  3. 创建ASP.NET Core MVC应用程序(4)-添加CRUD动作方法和视图

    创建ASP.NET Core MVC应用程序(4)-添加CRUD动作方法和视图 创建CRUD动作方法及视图 参照VS自带的基架(Scaffold)系统-MVC Controller with view ...

  4. 创建ASP.NET Core MVC应用程序(3)-基于Entity Framework Core(Code First)创建MySQL数据库表

    创建ASP.NET Core MVC应用程序(3)-基于Entity Framework Core(Code First)创建MySQL数据库表 创建数据模型类(POCO类) 在Models文件夹下添 ...

  5. 创建ASP.NET Core MVC应用程序(1)-添加Controller和View

    创建ASP.NET Core MVC应用程序(1)-添加Controller和View 参考文档:Getting started with ASP.NET Core MVC and Visual St ...

  6. 跨平台应用集成(在ASP.NET Core MVC 应用程序中集成 Microsoft Graph)

    作者:陈希章 发表于 2017年6月25日 谈一谈.NET 的跨平台 终于要写到这一篇了.跨平台的支持可以说是 Office 365 平台在设计伊始就考虑的目标.我在前面的文章已经提到过了,Micro ...

  7. 【翻译】使用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 ...

  8. ASP.NET Core MVC应用程序中的后台工作任务

    在应用程序的内存中缓存常见数据(如查找)可以显着提高您的MVC Web应用程序性能和响应时间.当然,这些数据必须定期刷新. 当然你可以使用任何方法来更新数据,例如Redis中就提供了设定缓存对象的生命 ...

  9. Entity Framework Core系列之实战(ASP.NET Core MVC应用程序)

    本示例演示在ASP.NET 应用程序中使用EF CORE创建数据库并对其做基本的增删改查操作.当然我们默认你的机器上已经安装了.NET CORE SDK以及合适的IDE.本例使用的是Visual St ...

随机推荐

  1. poj2718-Smallest Difference(枚举全排列)

    一,题意: 给出最多10个数字,将它们划分为两个整数,求差值最小的值(除非只有一位数,否则不允许出现先导0) 很显然如果总共有n个数,必然有一个整数长n/2,另一个长n-n/2.二,思路: 利用nex ...

  2. 装逼名词-ABA CAS SpinLock

    今天看wiki,看到一个提到什么什么会陷入 race condition & ABA problem.丫的我没听过ABA呀,那么我去搜了一下,如下: http://www.bubuko.com ...

  3. 广州PostgreSQL用户会技术交流会小记 2015-9-19

    广州PostgreSQL用户会技术交流会小记 2015-9-19 今天去了广州PostgreSQL用户会组织的技术交流会 分别有两个session 第一个讲师介绍了他公司使用PostgreSQL-X2 ...

  4. Disruptor-NET和内存栅栏

    Disruptor-NET算法(是一种无锁算法)需要我们自己实现某一种特定的内存操作的语义以保证算法的正确性.这时我们就需要显式的使用一些指令来控制内存操作指令的顺序以及其可见性定义.这种指令称为内存 ...

  5. Event Store 2.0发布,带来了安全支持和测试版Projections库

    Event Store 2.0版本于上周发布,它带来了安全支持允许锁定Event Store和在事件流上设置访问控制列表.其主要新特性包括: HTTP和TCP之上的身份认证,包括账户管理 测试版Pro ...

  6. 一步步学习javascript基础篇(3):Object、Function等引用类型

    我们在<一步步学习javascript基础篇(1):基本概念>中简单的介绍了五种基本数据类型Undefined.Null.Boolean.Number和String.今天我们主要介绍下复杂 ...

  7. ASP.Net请求处理机制初步探索之旅 - Part 2 核心

    开篇:上一篇我们了解了一个请求从客户端发出到服务端接收并转到ASP.Net处理入口的过程,这篇我们开始探索ASP.Net的核心处理部分,借助强大的反编译工具,我们会看到几个熟悉又陌生的名词(类):Ht ...

  8. 软件工程(QLGY2015)博客点评总结

    目录 第一次作业(2015.5.9) 第二次作业(2015.5.21) 第三次作业(2015.6.11) 2015上半年软工助教总结 第一次作业(2015.5.9) 存在主要问题 1)书写这种练习博客 ...

  9. Some warning were found during validation

    前几天做一个iOS下的App更新,到上传的时候出了问题,一直传了大半个小时,结果还是没传完,再试依然不行,于是只好关机,把电脑带回家弄. 回家后出现了更奇怪的事,经过漫长等待后,竟然出现这个提示: 我 ...

  10. [nRF51822] 10、基础实验代码解析大全 · 实验15 - RTC

    一.实验内容: 配置NRF51822 的RTC0 的TICK 频率为8Hz,COMPARE0 匹配事件触发周期为3 秒,并使能了TICK 和COMPARE0 中断. TICK 中断中驱动指示灯D1 翻 ...