在这个最终 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 操作及视图