MVC 3.0 Code First 入门






4.75/5 (18投票s)
该系列文章的第一部分,旨在介绍如何创建一个信息系统,教师可以管理他们的学生和课程。本教程将深入讲解 MVC 的 Code First 方法,并涉及 Nuget 包管理器中的 MvcScaffolding 的使用。
引言
为了在暑期进行一项关于使用 MVC 3.0 的独立研究,我整理了这篇文章,以展示这项技术是多么的强大,以及它提供的令人难以置信的易用性,能够让你在快速敏捷的环境中为企业或个人开发 Web 应用程序。这篇文章将介绍一种使用 MVC 的新方法,称为 Code First 方法,它使得应用程序的开发非常简单,无需太多麻烦。我们还将通过使用一个名为 Nuget 包管理器 的扩展来构建我们的 Views 和 Controllers。
关于 MVC
MVC 是 Model-View-Controller 的缩写,这是一种将你的应用程序分为三个主要组件—“模型、视图和控制器”的架构模式。 这里 有一个很好的资源,解释了这种设计模式。在继续之前,请务必查看此资源。
可以在 这里 找到一些很棒的教程,它们可以帮助你理解 MVC。如果你完成了其中一个教程,那么跟随本教程应该没有问题。
Microsoft 刚刚发布了 MVC 4.0 RC ,它配备了新的功能,如 Web API 支持、移动应用功能以及对异步 方法的增强支持。 在 发布候选说明 中阅读完整的功能列表。
尽管新版本仍处于发布候选阶段,但新增的功能仅能让你轻松地开发从移动到 Web 的高度复杂的 Web 应用程序。
先决条件
要开始,你必须安装以下软件
2. MVC 3.0
4. Nuget
5. 第一部分的源代码 *建议下载,方便跟随学习,但非必需*
我们将要构建什么
在本教程中,我们将使用 Code First 方法构建一个学生管理系统。在这个学生管理系统中,教师可以添加课程和学生。他们将能够管理每个课程中的学生,并为与不同课程相关的讲座做笔记。本教程将是一个三部分系列,将帮助你构建一个学生信息系统,允许教师管理学生、讲座、课程,为讲座和/或学生做笔记,并跟踪学生的出勤情况。它还会提醒教师学生是否因缺课过多而落后。在本篇文章中,我们将介绍系列文章的第一部分。第一部分将创建基础层来启动这个项目。完成第一部分后,用户将能够添加和创建课程或学生,以及为学生和课程做笔记。
这个信息系统可以用很少的代码创建一个,如果你熟悉这种方法,可以在一小时内完成。这里有一个关于 Code First 方法 的精彩描述,在继续之前你应该阅读它。
**第二部分和第三部分将在本文创建日期后几周内,在我有一些空闲时间时发布**
第一部分
步骤 1 - 创建项目
1. 打开 Visual Studio,在文件菜单下 选择创建新项目。
2. 选择创建新的 MVC 3 项目。
3. 创建一个具有 Internet Application 模板的 MVC 3 项目,并使用 HTML5 语义标记,就像 图 1 一样。为你的项目/解决方案命名,随意命名。
图 1
步骤 2 - 创建模型
1. 在解决方案资源管理器中,右键单击 Model 文件夹并创建一个新类。 图 2
图 2
2. 将类命名为 ManagementModel.cs
创建类后,类中会创建以下代码。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace MvcApplication.Models
{
public class ManagementModel
{
}
}
3. 将 public class MangementModel 更改为以下代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace MvcApplication.Models
{
public class Course
{
public int CourseId { get; set; }
public string Name { get; set; }
public virtual ICollection<Student> Students { get; set; }
public virtual ICollection<Lecture> Lectures { get; set; }
}
public class Lecture
{
public int LectureId { get; set; }
public string Name { get; set; }
public DateTime Date { get; set; }
public string Description { get; set; }
public string Notes { get; set; }
public int CourseId { get; set; }
public virtual Course Course { get; set; }
}
public class Student
{
public int StudentId { get; set; }
public string Name { get; set; }
public string Notes { get; set; }
public int CourseId { get; set; }
public virtual Course Course { get; set; }
}
}
从我们创建的模型中,MVC 将自动在我们的 app-data 文件夹中创建一个数据库,该数据库将在完成步骤 3 后存储所有数据,这消除了大量繁琐的工作。正如你所见,Courses 类与 Lectures 和 Students 类之间存在一对多关系。要了解更多关于创建具有不同关系的模型的信息,以及更深入地理解我们将在步骤 3 中做什么,请点击这里。
步骤 3 - 使用 Nuget 命令行进行脚手架
为了继续,你必须确保已安装最新版本的 Nuget,如本文先决条件 部分所列。
Nuget 是管理 Mvc 项目扩展/包的好方法。它使得创建我们正在构建的应用程序变得极其容易且速度快。如果你是 Nuget 新手,这里 是一个很好的资源,解释了安装和可以在 Nuget 命令行输入的各种命令。开始时,我们将确保已安装最新版本的 Entity Framework。
1. 在工具菜单的 Library Package 子菜单下打开 Nuget 命令行控制台。
2. 在命令行中输入 Update-Package EntityFramework ,如图图 3 所示。
图 3
在更新 Entity Framework 后,我们将要安装一个新包,该包允许我们轻松地将模型脚手架成 View 和 Controller。为此,我们将添加一个名为 MVC Scaffolding 的扩展。 Steve Sanderson 的博客是那些考虑这种方法的人以及更深入的教程的绝佳资源。 Steve Sanderson 的博客。
3. 在 Nuget 命令行中键入以下命令: Install-Package MvcScaffolding
4. 然后在命令行中键入以下命令
Scaffold Controller Course
这将自动从 ManagementModel.cs 文件中的 Course 类生成 Controller 和 View。
5. 通过键入以下代码为 ManagementModel.cs 中的其他三个类(Student 和 Lecture)生成 Controller:
Scaffold Controller Student
然后
Scaffold Controller Lecture
6. 运行解决方案,并通过在本地主机端口号后添加以下内容来创建一个新课程:localhost:yourprojectport#/Courses/Create
正如你所见,一个自动创建的表单允许我们创建一个新课程。
7. 创建一个你选择的所需名称的新课程。我将创建一个名为“系统分析与设计”的新课程。
创建课程后,你将被重定向到 localhost/Courses 视图。此视图包含一个网格,显示你创建的课程,如图图 4 所示。它还包括每个课程的学生和讲座数量。目前有 0 名学生和 0 节讲座,因为我们还没有创建任何学生或讲座。让我们添加一些学生和讲座。
8. 在 Course Grid View 下选择 Create New,再添加几个课程。
图 4
9. 转到 url localhost/yourprojectport#/Students/Create,填写表单来创建一些学生。
10. 转到 url localhost/yourprojectport#/Lectures/Create,为每个课程创建一些讲座。
你可能已经注意到,MVC 已经自动为我们的表单进行了错误处理,以确保用户输入每个字段的正确要求,如图 5 所示。
图 5
步骤 4 - 布局视图
1. 在解决方案资源管理器中 Views 下的 Shared 文件夹中,你会注意到一个名为 _Layout.cshtml 的文件。此文件允许你创建网站的外部布局。布局将包围每个创建的 View。让我们添加菜单项,以便用户可以轻松导航到 Students/Lectures 或 Courses 视图。为此,我们将在此代码添加到 <nav> 标签下。
<li>@Html.ActionLink("Courses", "Index", "Courses")</li>
<li>@Html.ActionLink("Lectures", "Index", "Lectures")</li>
<li>@Html.ActionLink("Students", "Index", "Students")</li>
进行上述更改后,你的布局视图应如下所示。
<pre lang="html"><!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>@ViewBag.Title</title>
<link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" />
<script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/modernizr-1.7.min.js")" type="text/javascript"></script>
</head>
<body>
<div class="page">
<header>
<div id="title">
<h1>My MVC Application</h1>
</div>
<div id="logindisplay">
@Html.Partial("_LogOnPartial")
</div>
<nav>
<ul id="menu">
<li>@Html.ActionLink("Home", "Index", "Home")</li>
<li>@Html.ActionLink("About", "About", "Home")</li>
<li>@Html.ActionLink("Courses", "Index", "Courses")</li>
<li>@Html.ActionLink("Lectures", "Index", "Lectures")</li>
<li>@Html.ActionLink("Students", "Index", "Students")</li>
</ul>
</nav>
</header>
<section id="main">
@RenderBody()
</section>
<footer>
</footer>
</div>
</body>
</html>
2. 运行解决方案,你就完成了第一部分!最终结果应如图图 6-9 所示。
图 6
图 7
图 8
图 9
摘要
正如你所见,使用 MvcScaffolding 在 Mvc 3.0 中使用 Code First 方法创建简单的应用程序非常容易。在第二部分中,我们将实现教师考勤功能,以及一个通知系统,允许教师查看那些经常缺课的学生。第三部分将讨论安全性,并深入探讨我们的 Controllers。请稍后回来获取这些教程。