数据库
使用Navicat在数据库中创建一张表(mysql)
CREATE TABLE `student_class` (
`Classid` int NOT NULL,
`ClassName` varchar(255) NOT NULL,
`Hours` int NOT NULL,
`Name` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
项目
注意: 版本跨越过大的Nuget包会出现版本冲突
创建一个空的mvc项目,安装三个Nuget包
注意:text2是我个人的数据库名,根据个人实际情况进行修改
终端
从数据库中生成实体框架的上下文和模型类。
Rider终端或cmd都可,cmd需要进入该项目下才可运行;命令根据自己所使用的数据库进行选择
MySQL
dotnet ef dbcontext scaffold "server=127.0.0.1;uid=root;pwd=123456;database=text2" Pomelo.EntityFrameworkCore.MySql --context-dir Data --output-dir Entities
注意:命令中的uid、pwd、database、server要与自己使用的一致 注意检查!!!
这时候项目中就会自动创建两个文件夹以两个类
Program类
将上面自动生成的text2Context
数据库上下文注入到服务容器中,并指定数据库连接字符串和数据库版本。
builder.Services.AddDbContext<text2Context>(
options =>
{
options.UseMySql(builder.Configuration.GetConnectionString("MyDatabase"),
Microsoft.EntityFrameworkCore.ServerVersion.Parse("8.0.33-mysql"));
});
appsettings.json文件
数据库连接字符串
控制器
在控制器中进行依赖注入,将日志记录器和数据库上下文通过构造函数形式注入到控制器中。
public class HomeController : Controller
{
private readonly ILogger<HomeController> _logger;
private readonly text2Context _text2Context;
public HomeController(ILogger<HomeController> logger, text2Context text2Context)
{
_logger = logger;
_text2Context = text2Context;
}
控制器的 Index 方法中,通过注入的context,从数据库中获取 StudentClasses 表的所有记录,然后将这些记录传递给视图进行进行展示。
public IActionResult Index()
{
var studentClasses = _text2Context.StudentClasses.AsNoTracking().ToList();
return View(studentClasses);
}
index文件
@model List<Step5.Unit1.Entities.StudentClass>
<h2>Student Classes</h2>
<ul>
@foreach (var studentClass in Model)
{
<li>Class Name: @studentClass.ClassName</li>
}
</ul>