作者在新建了一个ASP.NET Core Web项目的基础上,想连接本地的Mysql数据库,参考了很多博客,各种各样的说法都有,多少让人有感凌乱!自己最后捣鼓成功了!所以写一篇博客,以便后人查阅!

操作步骤:

1.本地安装MySQL

参阅:MySql的配置——详细教程
我安装的是8.0.30版本的MySQL。

安装好数据库之后,新建一个MySQL连接:

注意此处的主机名为localhoust,这个很重要,在后续的数据库连接字符串中对应Data Source=localhost

新建好连接之后,新建一个名为csharp_demo的数据库,其对用数据库连接字符串中的Database=csharp_demo。然后新建一个student表,表中再添加几条数据。

2.本地新建ASP.NET Core MVC项目


新建好后会有如图所示的项目目录结构:

配置ASP.NET Core Web项目连接MySQL数据库的过程中,重点用到:appsetting.jsonProgram.cs两个文件。其中appsetting.json文件用于配置连接字符串,Program.cs文件用于注册数据库连接服务。

3.Mysql连接配置

appsetting.json中添加连接字符串,添加后的appsetting.json文件内容变为:

{"ConnectionStrings": {"MysqlConnection": "Data Source=localhost;Database=csharp_demo;User ID=root;Password=123456;pooling=true;port=3306;sslmode=none;CharSet=utf8;" },"Logging": {"LogLevel": {"Default": "Information","Microsoft.AspNetCore": "Warning"}},"AllowedHosts": "*"
}

其中Data Source=localhost用于指定本地localhost数据源。
Database=csharp_demo用于指定我创建的名为csharp_demo数据库。
User ID=root是我的数据库root用户名。
Password=123456是我设定的本机数据库root用户密码。

然后在Program.cs文件中注册数据库上下文服务:

builder.Services.AddDbContext<StudentContext>(options =>options.UseMySql(builder.Configuration.GetConnectionString("MysqlConnection"), new MySqlServerVersion(new Version())));

整个Program.cs文件的代码为:

using Microsoft.EntityFrameworkCore;
using MySQL_Connect_Demo.Data;
using Microsoft.Extensions.DependencyInjection;var builder = WebApplication.CreateBuilder(args);// Add services to the container.
builder.Services.AddControllersWithViews();//下方指定具体版本的mysql或者使用new MySqlServerVersion(new Version())都是可以的!
//builder.Services.AddDbContext<StudentContext>(options =>
//options.UseMySql(builder.Configuration.GetConnectionString("MysqlConnection"), new MySqlServerVersion("8.0.30")));
builder.Services.AddDbContext<StudentContext>(options =>options.UseMySql(builder.Configuration.GetConnectionString("MysqlConnection"), new MySqlServerVersion(new Version())));var app = builder.Build();// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{app.UseExceptionHandler("/Home/Error");// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.app.UseHsts();
}app.UseHttpsRedirection();
app.UseStaticFiles();app.UseRouting();app.UseAuthorization();app.MapControllerRoute(name: "default",pattern: "{controller=Home}/{action=Index}/{id?}");app.Run();

4.数据库上下文类的配置

在工程项目的Models文件夹下新建Student类:

using System.ComponentModel.DataAnnotations;
namespace MySQL_Connect_Demo.Models
{public class Student{[Key]public int Id { get; set; }public string Name { get; set; } = String.Empty;public string Age { get; set; }}
}

在工程项目下新建Data文件夹,然后新建StudentContext.cs类:

using Microsoft.EntityFrameworkCore;
using MySQL_Connect_Demo.Models;namespace MySQL_Connect_Demo.Data
{public class StudentContext : DbContext{public StudentContext(DbContextOptions<StudentContext> options) : base(options){}public DbSet<Student> Students { get; set; }protected override void OnModelCreating(ModelBuilder modelBuilder){modelBuilder.Entity<Student>().ToTable("student");}}
}

上面OnModelCreating方法中的modelBuilder.Entity<Student>().ToTable("student");用于将数据集合映射到csharp_demo数据库的student表。

5.新建控制器类StudentController

using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using MySQL_Connect_Demo.Data;namespace MySQL_Connect_Demo.Controllers
{public class StudentController : Controller{private readonly StudentContext _context;public StudentController(StudentContext context){_context = context;}public async Task<IActionResult> Index(){return View(await _context.Students.ToListAsync());}}
}

6.新建视图

在View文件夹下新建Student文件夹,并新建Index.cshtml文件:

@model IEnumerable<MySQL_Connect_Demo.Models.Student>@{ViewData["Title"] = "Index";
}<h2>Index</h2><p><a asp-action="Create">Create New</a>
</p>
<table class="table"><thead><tr><th>@Html.DisplayNameFor(model => model.Id)</th><th>@Html.DisplayNameFor(model => model.Name)</th><th>@Html.DisplayNameFor(model => model.Age)</th><th></th></tr></thead><tbody>
@foreach (var item in Model) {<tr><td>@Html.DisplayFor(modelItem => item.Id)</td><td>@Html.DisplayFor(modelItem => item.Name)</td><td>@Html.DisplayFor(modelItem => item.Age)</td><td><a asp-action="Edit" asp-route-id="@item.Id">Edit</a> |<a asp-action="Details" asp-route-id="@item.Id">Details</a> |<a asp-action="Delete" asp-route-id="@item.Id">Delete</a></td></tr>
}</tbody>
</table>

整个项目的目录结构为:

主要在Program.cdappsettings.json文件中添加了配置内容。然后新建了StudentController.csStudentContext.csStudent.csIndex.cshtml等文件,每个文件的内容都在上文中给出。

最终运行项目:

成功从数据库中拿到数据!

ASP.NET Core Web项目连接MySQL数据库相关推荐

  1. eclipse中的web项目连接MySQL数据库

    这篇文章写自本人大三学习Java web,为了连接这个MySQL结果摸了一天,人都连接连麻了 首先是eclipseEE的下载 点此下载 不要点击那个DOWNLOAD,直接点击那个文件,或者使用其他镜像 ...

  2. Intellj IDEA添加MySQL数据库以及项目连接Mysql数据库

    添加数据库 View->Tool Windows->datebase->"+"->Data Source->MySQL 输入自己MySQL用户名和密码 ...

  3. IDEA项目连接MySQL数据库

    IDEA项目连接MySQL数据库 一.前提 电脑已经安装好IntelliJ IDEA.MySQL和SQLyog并配置好,博主使用版本: 1)IntelliJ IDEA 2018.2.2 2)MySQL ...

  4. java maven项目连接mysql数据库

    实现maven项目连接mysql数据库 在maven项目下新建class文件,编辑该文件,部分具体代码如下: import java.sql.Connection; import java.sql.D ...

  5. asp.net web.config连接mysql数据库_ASP.NET中使用web.config配置数据库连接

    本文中我们主要讨论了如何使用web.config来配置一个web应用程序中的数据库连接.web.config文件是标准的xml文件,我们可以使用它来为一台机器下的每一个web应用程序或某个应用程序或一 ...

  6. ASP.NET CORE WEB应用(有数据库操作的应用)发布到IIS

    我当前运行环境: 电脑操作系统:win10专业版 编译器版本:VS2019 ASP.NET CORE 版本:ASP.NET CORE 5.0 数据库:SQL Server 2019 Express 默 ...

  7. Java web 服务器连接MySQL数据库代码

    文章目录 前言 一,建立工程 二,导入jar包 三,编写DataBase类实现连接数据库与操作数据库 四,效果图 参考文章 前言 经过前面的环境部署,今天我们终于可以来连接数据库了.参考我之前的文章. ...

  8. SpringBoot项目连接MySQL数据库

    前言 本篇基于MySQL数据库 8.0.29版本进行说明,需要提前安装MySQL数据库.具体教程详见:<最新版MySQL 8.0 的下载与安装(详细教程)> 一.导入依赖 一般在新建Spr ...

  9. Web—网页连接Mysql数据库(php)网站建设

    <?php $lnk = mysql_connect('localhost', 'root', '********') or die ('连接失败 : ' . mysql_error());// ...

最新文章

  1. OPPO海外官方调试ID
  2. 逻辑回归:确定一个人是否年收入超过5万美元
  3. 图神经网络权威基准OGB的2020年“刷榜往事”
  4. RocketMQ(六):namesrv再探
  5. fsb,fev文件格式转换,提取与打包
  6. 邓迎春绘画201702作品08
  7. android 自定义view实现拖动放大缩小_自定义itemCheckView
  8. qpython3怎样安notebook_Windows下基于Python3安装Ipython Notebook(即Jupyter)。python –m pip install XXX...
  9. Visual C++ 运行库合集
  10. DHCP+TFTP+PXE自动网络引导安装Linux操作系统
  11. 特斯拉Model 3产能跟不上,是因为用了太多机器人
  12. 为什么大数据分析很重要
  13. 机器学习Scikit-Learn基本操作实战
  14. 2021年最棒的10款Java框架,你喜欢哪个?
  15. 教你如何制作网页木马
  16. “IN-Chain全球区块链峰会”落幕 30余位大咖都说了什么
  17. 智能车OS照搬安卓没有出路,特别是在中国
  18. (搞笑)经典!一些很彪悍的句子 !!
  19. python 一个例子解释全局变量和局部变量
  20. 利用wifi对用户进行网络监控

热门文章

  1. vue php项目目录结构,vue的项目结构须知
  2. 实验室作业之英文文本聚类
  3. js获取域名携带参数
  4. 想不想修真鸿蒙源液有什么用,想不想修真弟子令作用及收益最大化攻略
  5. 钱星宇_2022-12-2
  6. vacuum(free)
  7. 聚观早报|拼多多回应总部迁爱尔兰;微软宣布全面开放聊天机器人
  8. gedit注释快捷建 ctrl+m
  9. STM32F103系列 TIM1~TIM8库函数初始化代码批量发布干货
  10. NBA名人堂之-威斯·昂塞尔|卡里姆·阿卜杜勒·贾巴尔|奈特·瑟蒙德|保罗·阿里金|埃尔金·贝勒