ASP.NET MVC 4 Entity Framework 基架和迁移

Web Camp 团队

下载 Web Camp 培训工具包

如果熟悉 ASP.NET MVC 4 控制器方法,或者已完成“帮助程序、窗体和验证”动手实验室,则应注意创建、更新、列出和删除任何数据实体的大部分逻辑在整个应用程序中重复。 更何况,如果模型有多个类要操作,则可能花费相当长的时间为每个实体操作以及每个视图编写 POST 和 GET 操作方法。

在本实验室中,你将了解如何使用 ASP.NET MVC 4 基架自动生成应用程序的 CRUD(创建、读取、更新和删除)的基线。 从简单的模型类开始,如果不编写单行代码,你将创建一个控制器,其中包含所有 CRUD 操作以及所有必要的视图。 生成并运行简单解决方案后,将生成应用程序数据库,以及用于数据操作的 MVC 逻辑和视图。

此外,你将了解如何使用 Entity Framework 迁移在整个应用程序中执行模型更新是多么容易。 使用简单步骤更改模型后,实体框架迁移将允许修改数据库。 考虑到所有这些事项,你将能够更有效地生成和维护 Web 应用程序,并利用 ASP.NET MVC 4 的最新功能。

注意

所有示例代码和代码片段都包含在 Web Camp 培训工具包中,可从 Microsoft-Web/WebCampTrainingKit 版本获取。 特定于此实验室的项目可在 ASP.NET MVC 4 实体框架基架和迁移中使用

目标

在此动手实验室中,你将了解如何:

  • 对控制器中的 CRUD 操作使用 ASP.NET 基架。
  • 使用 Entity Framework 迁移更改数据库模型。

先决条件

必须具有以下项才能完成此实验室:

安装

安装代码片段

为方便起见,你将在此实验室中管理的大部分代码都可用作 Visual Studio 代码片段。 若要安装代码片段,请运行 .\Source\Setup\CodeSnippets.vsi 文件。

如果你不熟悉 Visual Studio Code 代码片段,并且想要了解如何使用它们,则可以参考本文档中的附录“附录 B:使用代码片段”。


练习

以下练习构成了此动手实验室:

  1. 通过实体框架迁移使用 ASP.NET MVC 4 基架

注意

本练习附带了一个 End 文件夹,其中包含完成练习后应获取的结果解决方案。 如果需要完成练习的其他帮助,可以使用此解决方案作为指南。

完成本实验室的估计时间: 30 分钟

练习 1:通过实体框架迁移使用 ASP.NET MVC 4 基架

ASP.NET MVC 基架提供了一种以标准化方式生成 CRUD 操作的快速方法,从而创建必要的逻辑,使应用程序能够与数据库层交互。

在本练习中,你将了解如何先使用 ASP.NET MVC 4 基架创建 CRUD 方法。 然后,你将了解如何使用 Entity Framework 迁移更新应用数据库中的更改的模型。

任务 1 - 使用基架创建新的 ASP.NET MVC 4 项目

  1. 如果尚未打开,请启动 Visual Studio 2012

  2. 选择 文件 |新建项目。 在“新建项目”对话框中的 Visual C# 下 |Web 部分,选择 ASP.NET MVC 4 Web 应用程序。 将项目命名为 MVC4andEFMigrations ,并将位置 设置为本实验室的 Source\Ex1-UsingMVC4ScaffoldingEFMigrations 文件夹。 将 解决方案名称 设置为 “开始 ”,并确保 选中解决方案的 “创建目录”。 单击“确定”。

    “新建 ASP.NET MVC 4 项目”对话框

    “新建 ASP.NET MVC 4 项目”对话框

  3. “新建 ASP.NET MVC 4 项目 ”对话框中,选择 Internet 应用程序 模板,并确保 Razor 是选定的 视图引擎。 单击“确定”以创建该项目。

    新的 ASP.NET MVC 4 Internet 应用程序

    新的 ASP.NET MVC 4 Internet 应用程序

  4. 在解决方案资源管理器中,右键单击“模型”并选择“添加” |用于创建简单课堂人员(POCO)的类。 将其命名为 “人员 ”,然后单击“ 确定”。

  5. 打开 Person 类并插入以下属性。

    (代码片段 - ASP.NET MVC 4 和实体框架迁移 - Ex1 人员属性

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    
    namespace MVC4EF.Models
    {
        public class Person
        {
            public int PersonID { get; set; }
    
            public string FirstName { get; set; }
    
            public string LastName { get; set; }        
        }
    }
    
  6. 单击“生成” |生成解决方案 以保存更改并生成项目。

    显示 Visual Studio Express 2012 的屏幕截图,其中显示了“生成”菜单,然后选择“生成解决方案”。

    生成应用程序

  7. 在解决方案资源管理器中,右键单击控制器文件夹并选择“添加” |控制器

  8. 将控制器 命名为 PersonController ,并使用以下值完成 基架选项

    1. 在“模板”下拉列表中,使用 Entity Framework 选项选择具有读/写操作和视图的 MVC 控制器。

    2. Model 类 下拉列表中,选择 Person 类。

    3. “数据上下文”类 列表中,选择“ <新建数据上下文...”>。 选择任意名称,然后单击“ 确定”。

    4. 在“ 视图 ”下拉列表中,确保 已选择 Razor

      使用基架添加 Person 控制器

      使用基架添加 Person 控制器

  9. 单击“添加,为具有基架的人员创建新控制器。 现在,你已生成控制器操作以及视图。

    使用基架创建 Person 控制器后

    使用基架创建 Person 控制器后

  10. 打开 PersonController 类。 请注意,已自动生成完整的 CRUD 操作方法。

人员控制器内部

人员控制器内部

任务 2 - 运行应用程序

此时,尚未创建数据库。 在此任务中,将首次运行应用程序并测试 CRUD 操作。 将使用 Code First 动态创建数据库。

  1. F5 运行该应用程序。

  2. 在浏览器中,将 /Person 添加到 URL 以打开“人员”页。

    应用程序首次运行

    应用程序:首次运行

  3. 现在,你将浏览人员页面并测试 CRUD 操作。

    1. 单击“新建以添加新人员。 输入名字和姓氏,然后单击“ 创建”。

      添加新人员

      添加新人员

    2. 在人员列表中,可以删除、编辑或添加项目。

      人员列表

      人员列表

    3. 单击“详细信息以打开人员的详细信息。

      人员详细信息

      人员详细信息

  4. 关闭浏览器并返回到 Visual Studio。 请注意,已为整个应用程序(从模型到视图)的人员实体创建了整个 CRUD,而无需编写一行代码!

任务 3 - 使用 Entity Framework 迁移更新数据库

在此任务中,将使用 Entity Framework 迁移更新数据库。 你将发现更改模型是多么容易,并使用实体框架迁移功能反映数据库中的更改。

  1. 打开包管理器控制台。 选择“工具”>“NuGet 包管理器”>“包管理器控制台”。

  2. 在“包管理器控制台”中,输入以下命令:

    PMC

    Enable-Migrations -ContextTypeName [ContextClassName]
    

    启用迁移

    启用迁移

    Enable-Migration 命令创建 Migrations 文件夹,其中包含用于初始化数据库的脚本。

    迁移文件夹

    迁移文件夹

  3. 迁移文件夹中打开Configuration.cs 文件。 找到类构造函数并将 AutomaticMigrationsEnabled 值更改为 true

    public Configuration()
    {
        AutomaticMigrationsEnabled = true;
    }
    
  4. 打开 Person 类并为人员的中间名添加属性。 使用此新属性,可以更改模型。

    public class Person
    {
        public int PersonID { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string MiddleName { get; set; }
    }
    
  5. 选择“ 生成” |在菜单上生成解决方案 以生成应用程序。

    屏幕截图显示“生成”菜单,然后选择“生成解决方案”。

    生成应用程序

  6. 在“包管理器控制台”中,输入以下命令:

    PMC

    Add-Migration AddMiddleName
    

    此命令将查找数据对象中的更改,然后添加必要的命令来相应地修改数据库。

    添加中间名称

    添加中间名称

  7. (可选)可以运行以下命令,通过差异更新生成 SQL 脚本。 这将允许你手动更新数据库(在这种情况下不需要),或应用其他数据库中的更改:

    PMC

    Update-Database -Script -SourceMigration:
    
    $InitialDatabase
    

    生成 SQL 脚本

    生成 SQL 脚本

    SQL 脚本更新

    SQL 脚本更新

  8. 在程序包管理器控制台中,输入以下命令来更新数据库:

    PMC

    Update-Database -Verbose
    

    更新数据库

    更新数据库

    这将在 People 表中添加 MiddleName,以匹配 Person 类的当前定义。

  9. 更新数据库后,右键单击控制器文件夹并选择“添加” |控制器 再次添加 Person 控制器(使用相同的值完成)。 这将更新添加新属性的现有方法和视图。

    添加控制器更新

    更新控制器

  10. 单击“添加” 。 然后,选择“覆盖PersonController.cs”和“覆盖关联视图”的值,然后单击“确定”。

添加控制器覆盖

更新控制器

任务 4 - 运行应用程序

  1. F5 运行该应用程序。

  2. 打开 /Person。 请注意,数据已保留,同时添加了中间名称列。

    添加了中间名称

    添加了中间名称

  3. 如果单击“编辑”,则可以向当前人员添加中间名。

    中间名称版本


总结

在此动手实验室中,你学习了使用任何模型类通过 ASP.NET MVC 4 基架创建 CRUD 操作的简单步骤。 然后,你已了解如何使用 Entity Framework 迁移在应用程序中(从数据库到视图)执行端到端更新。

附录 A:安装 Visual Studio Express 2012 for Web

可以使用 Microsoft Web 平台安装程序 安装 Microsoft Visual Studio Express 2012 for Web 或其他“Express”版本。 以下说明指导你完成使用 Microsoft Web 平台安装程序 安装 Visual Studio Express 2012 for Web 所需的步骤。

  1. 转到 https://learn.microsoft.com/iis/extensions/introduction-to-iis-express/iis-express-overview?linkid=9810169。 或者,如果已安装 Web 平台安装程序,可以打开它并搜索产品“Visual Studio Express 2012 for Web with Windows Azure SDK”。

  2. 单击“立即安装”。 如果没有 Web 平台安装程序 ,将重定向以先下载并安装它。

  3. Web 平台安装程序打开后,单击“安装以启动安装程序。

    安装 Visual Studio Express

    安装 Visual Studio Express

  4. 阅读所有产品的许可证和条款,然后单击“我接受继续。

    接受许可条款

    接受许可条款

  5. 等待下载和安装过程完成。

    安装进度

    安装进度

  6. 安装完成后,单击“ 完成”。

    安装已完成

    安装已完成

  7. 单击“退出关闭 Web 平台安装程序。

  8. 若要打开 Visual Studio Express for Web,请转到“开始”屏幕并开始编写“VS Express”,然后单击 VS Express for Web 磁贴。

    VS Express for Web 磁贴

    VS Express for Web 磁贴

附录 B:使用代码片段

使用代码片段时,只需用手指提示即可获取所有代码。 实验室文档将准确告诉你何时可以使用它们,如下图所示。

使用 Visual Studio 代码片段将代码插入项目中

使用 Visual Studio 代码片段将代码插入项目中

使用键盘添加代码片段(仅限 C#)

  1. 将光标置于要插入代码的位置。
  2. 开始键入代码段名称(不含空格或连字符)。
  3. 观看 IntelliSense 显示匹配的代码段名称。
  4. 选择正确的代码段(或在选择整个代码段名称之前继续键入)。
  5. 按 Tab 键两次在光标位置插入代码片段。

开始键入代码段名称

开始键入代码段名称

按 Tab 选择突出显示的代码片段

按 Tab 选择突出显示的代码片段

再次按 Tab,代码片段将展开

再次按 Tab,代码片段将展开

使用鼠标(C#、Visual Basic 和 XML) 1 添加代码片段。 右键单击要插入代码片段的位置。

  1. 选择“ 插入代码段 ”, 然后选择“我的代码片段”。
  2. 通过单击相关代码片段从列表中选择相关代码片段。

右键单击要插入代码片段的位置,然后选择“插入代码段”

右键单击要插入代码片段的位置,然后选择“插入代码段”

通过单击相关代码片段从列表中选择相关代码片段

通过单击相关代码片段从列表中选择相关代码片段