在这个最终 Lab 中,我们将实践在本门课所学的知识:

  • 使用 EF Core 生成 Model 类和数据访问层(DAL)

  • 创建 country 和 city 管理的控制器

  • 创建 layout 视图、功能性视图和分部视图

  • 运用主从页面和文件上传等技巧

准备 world 数据库

本实验我们将使用 MySQL 示例数据库(world)作为 Web 程序的数据库。MySQL 安装时会默认附加该数据库。

运行 MySQL Workbench 如果在 SCHEMAS 没看到 world 数据库,就请执行 Lab_Starter_Files\Module_5 文件夹中的 world.sql 脚本,手动生成 world 数据库。

为了简化业务模型,我们要删除 countrylanguage 表,并删除 country 表的大部分列。为此,请在 MySQL Workbench 中执行以下 SQL 命令:

  1. USE `world`;
  2. DROP TABLE `countrylanguage`;
  3. ALTER TABLE `country`
  4. DROP COLUMN `Continent`,
  5. DROP COLUMN `SurfaceArea`,
  6. DROP COLUMN `IndepYear`,
  7. DROP COLUMN `Population`,
  8. DROP COLUMN `LifeExpectancy`,
  9. DROP COLUMN `GNP`,
  10. DROP COLUMN `GNPOld`,
  11. DROP COLUMN `LocalName`,
  12. DROP COLUMN `GovernmentForm`,
  13. DROP COLUMN `HeadOfState`,
  14. DROP COLUMN `Capital`,
  15. DROP COLUMN `Code2`;

由于原始的 world 数据库的 country 表没有 NationalFlag 列,因此我们必须手动添加此列:
注:由于 MySQL Workbench 的默认使用安全模式进行表更新。要确保下面的代码成功执行,需先进行以下设置:

  1. 在 Workbench 中打开查询窗口后,打开 Edit 菜单并选择 Preferences

  2. 在左侧的 General Editors 栏中选择 SQL Editor

  3. 在右侧窗口中,向下滚动,找到 Safe Updates,并取消勾选该选项

  4. 单击 OK 应用更改并关闭对话框

  5. 在 Workbench 的按钮栏上,找到并单击 Reconnect to DBMS 按钮

  6. 然后执行以下代码

  1. USE `world`;
  2. ALTER TABLE `country` ADD COLUMN `NationalFlag` NVARCHAR(200);
  3. UPDATE `country` SET `NationalFlag` = 'Images\\Default.png';

接着执行 SELECT * FROMcountry; 效果如下:
5.3 Final Lab 全球城市管理器 - 图1

创建 Model 类和 DAL

参考 2.5.1 Lab1 通过 MySQL 数据库生成 Models 使用 EF Core 创建 Model 类和 DAL。

提示:dotnet ef dbcontext scaffold "Server=localhost;Database=world;Uid=YourUserName;Pwd=YourUserPassword;SslMode=none" "Pomelo.EntityFrameworkCore.MySql" -d -f -o Models

创建控制器和视图

本节只列出创建控制器和视图的步骤,希望你能参考之前所学独立完成。

Shared 视图:

  1. 创建 Views\Shared 文件夹

  2. 创建 Views\Shared_Layout.cshtml

  3. 创建 Views_ViewStart.cshtml

  4. 创建 Views\Shared_Error.cshtml

  5. 创建分部视图 Views\Shared_CityList.cshtml

Home 主页部分:

  1. 创建 Controllers\HomeController.cs

    1. 添加 Index 操作
  2. 创建 Views\Home 文件夹

  3. 创建主页 Views\Home\Index.cshtml

Country 部分:

  1. 创建 Controllers\CountryController.cs

    1. 声明相关字段和构造器
  2. 将 Default.png 拷贝至 wwwroot\images 文件夹

  3. 创建 Views\Country 文件夹

  4. 创建 Index 操作及视图

  5. 创建 Detail 操作及视图

  6. 创建 Create 操作(一对方法)及视图

  7. 创建 Update 操作(一对方法)及视图

  8. 创建 Remove 操作及视图

CIty 部分:

  1. 创建 Controllers\CityController.cs

    1. 声明相关字段和构造器
  2. 创建 Views\City 文件夹

  3. 创建 Index 操作及视图

  4. 创建 Create 操作(一对方法)及视图

  5. 创建 Update 操作(一对方法)及视图

  6. 创建 Delete 操作及视图