ASP.NET Core web程序使用EF Core(1:创建项目)

  本文继续学习微软ASP.NET Core教程中的EF Core部分。教程分为普通web程序中使用EF Core和MVC项目中使用EF Core。微软的示例是构建基本的大学网站,可以查看和更新学生、课程和讲师信息。
  文本先从普通web程序使用EF Core学起,微软示例中使用SQLite数据库,本文中改为MySql数据库。
  首先创建ASP.NET Core web程序,执行下列名称创建web项目,同时添加mysql相关的程序集引用。

//创建项目
dotnet new webapp -o ChinaUniversity
cd ChinaUniversity

//添加项目引用
dotnet add package Microsoft.EntityFrameworkCore.Design
dotnet add package Microsoft.EntityFrameworkCore.Tools
dotnet add package MySql.EntityFrameworkCore
dotnet add Pomelo.EntityFrameworkCore.MySql

  然后创建数据库,参照微软在ASP.NET Core示例项目(显示和管理高校学生选课数据库)中的数据库在mysql中创建对应数据库表。同时执行下列命令创建数据库表对应的对象类和数据库操作类。

dotnet ef dbcontext scaffold "server=localhost;uid=XXXX;pwd=XXXX;database=ChinaUniversityDB" Pomelo.EntityFrameworkCore.MySql -o Models -f 

ASP.NET Core web程序使用EF Core(1:创建项目)_第1张图片

  运行下列名称生成与学生页相关的基架(增删改查页面,同时创建数据库操作类,并在appsettings.json增加数据库连接字符串)。

dotnet-aspnet-codegenerator razorpage -m Student -dc ChinaUniversity.Models.ChinaUniversityDBContext -outDir Pages/Students

  命令运行后,在终端显示下列提示信息,应该是没有添加Microsoft.VisualStudio.Web. CodeGeneration.Design程序集。执行dotnet add package命令添加该程序集。
在这里插入图片描述

dotnet add package Microsoft.VisualStudio.Web.CodeGeneration.Design

  再运行基架生成命令,即可生成学生类对应的增删改查页面。
ASP.NET Core web程序使用EF Core(1:创建项目)_第2张图片ASP.NET Core web程序使用EF Core(1:创建项目)_第3张图片

  在program文件中添加数据库操作类,同时根据教程调用函数AddDatabaseDeveloperPageExceptionFilter函数(需引用程序集Microsoft.AspNetCore.Diagnostics. EntityFrameworkCore)。

	using ChinaUniversity.Models;

var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
builder.Services.AddRazorPages();
builder.Services.AddDbContext<ChinaUniversityDBContext>();
builder.Services.AddDatabaseDeveloperPageExceptionFilter();

  目前数据库表中没有数据,为便于后续测试,将微软教程中的数据库数据初始化类添加到项目中,并在program文件中调用,调用的代码如下所示:

var app = builder.Build();

// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Error");
    app.UseHsts();
}

using (var scope = app.Services.CreateScope())
{
    var services = scope.ServiceProvider;

    var context = services.GetRequiredService<ChinaUniversityDBContext>();
    DbInitializer.Initialize(context);
}

  编译并运行项目,项目启动时就会调用数据初始化类向数据库中添加测试数据。项目运行前后的数据库表内容变化如下所示:

  项目运行前数据库表内容为空
ASP.NET Core web程序使用EF Core(1:创建项目)_第4张图片
  项目运行后数据库表中增加了测试数据
ASP.NET Core web程序使用EF Core(1:创建项目)_第5张图片  至此,项目的基本结构已搭建完成(数据库、测试数据、对象类、基本页面等),后续还会继续跟着微软的教程完善项目内容。

参考文献:
[1]https://docs.microsoft.com/zh-cn/aspnet/core/data/ef-rp/intro?view=aspnetcore-5.0&tabs=visual-studio-code
[2]https://www.cnblogs.com/xiaoahui/p/11899488.html
[3]https://www.cnblogs.com/51net/p/12421010.html
[4]https://github.com/dotnet/AspNetCore.Docs/tree/main/aspnetcore/data/ef-rp/intro/samples

你可能感兴趣的:(dotnet编程,asp.net,EF,Core)