在现代Web开发中,快速开发和迭代是至关重要的。ASP.NET 5提供了一种称为Scaffolding的工具,它可以帮助开发者快速生成控制器和视图代码,从而实现CRUD(创建、读取、更新、删除)操作。本文将详细介绍如何在ASP.NET 5项目中使用Scaffolding来实现学生信息管理系统的CRUD操作。
在开始之前,请确保已经安装了以下软件:
安装Visual Studio 2015和ASP.NET 5后,点击开始,然后程序,选择Visual Studio 2015,点击Visual Studio 2015。点击新建,然后项目,选择Web,选择ASP.NET Web应用程序。输入项目名称,然后点击确定。
将使用SQL Server数据库进行CRUD操作。首先,创建一个名为StudentsDB的数据库,以及一个名为StudentMaster的表。以下是创建数据库表和插入样本记录的SQL脚本。
USE MASTER;
GO
-- 1) 检查数据库是否存在。如果数据库存在,则删除并创建新数据库
IF EXISTS (
SELECT [name]
FROM sys.databases
WHERE [name] = 'StudentsDB'
)
DROP DATABASE StudentsDB;
GO
CREATE DATABASE StudentsDB;
GO
USE StudentsDB;
GO
-- 1) //////////// StudentMasters
IF EXISTS (
SELECT [name]
FROM sys.tables
WHERE [name] = 'StudentMasters'
)
DROP TABLE StudentMasters;
GO
CREATE TABLE [dbo].[StudentMasters](
[StdID] INT IDENTITY PRIMARY KEY,
[StdName] [varchar](100) NOT NULL,
[Email] [varchar](100) NOT NULL,
[Phone] [varchar](20) NOT NULL,
[Address] [varchar](200) NOT NULL);
-- 插入样本数据到Student Master表
INSERT INTO [StudentMasters] ([StdName],[Email],[Phone],[Address])
VALUES (
'Shanu',
'syedshanumcain@gmail.com',
'01030550007',
'Madurai,India'
);
INSERT INTO [StudentMasters] ([StdName],[Email],[Phone],[Address])
VALUES (
'Afraz',
'Afraz@afrazmail.com',
'01030550006',
'Madurai,India'
);
INSERT INTO [StudentMasters] ([StdName],[Email],[Phone],[Address])
VALUES (
'Afreen',
'Afreen@afreenmail.com',
'01030550005',
'Madurai,India'
);
SELECT * FROM [StudentMasters];
要更改默认连接字符串以使用SQL连接,请打开“appsettings.json”文件。这是一个JSON文件,默认情况下看起来像下面这样。
默认连接字符串可能如下所示:
"ConnectionString": "Server=(localdb)\\mssqllocaldb;Database=aspnet5-MYASP.NET5DemoTest-afb3aac0-d181-4278-8436-cafeeb5a8dbf;Trusted_Connection=True;MultipleActiveResultSets=true"
现在,将其更改为SQL连接,如下所示:
"ConnectionString": "Server=YourSQLSERVERNAME;Database=StudentsDB;user id=SQLID;password=SQLPWD;Trusted_Connection=True;MultipleActiveResultSets=true;"
在这里,可以根据SQL连接进行更改,并保存“appsettings.json”文件。更新后的JSON文件将如下所示:
可以通过在Model文件夹中添加一个新类文件来创建模型。右键单击Models文件夹,然后点击添加新项。选择类,并输入类名为“StudentMasters.cs”。
在这里,类将如下所示。将添加模型字段属性。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.ComponentModel.DataAnnotations;
namespace MYASP.NET5DemoTest.Models
{
public class StudentMasters
{
[Key]
public int StdID { get; set; }
[Required]
[Display(Name = "Name")]
public string StdName { get; set; }
[Required]
[Display(Name = "Email")]
public string Email { get; set; }
[Required]
[Display(Name = "Phone")]
public string Phone { get; set; }
public string Address { get; set; }
}
}
现在,需要为Entity Framework创建一个DbContext。与Model类一样,向Models文件夹添加一个新类。
右键单击Models文件夹,然后点击添加新项。选择类,并输入类名为“StudentMastersAppContext.cs”。
在这里,首先需要添加Entity framework的头文件,使用Microsoft.Data.Entity;
接下来,继承DbContext到类,然后创建对象为DbContext,如下代码。
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.Data.Entity;
namespace MYASP.NET5DemoTest.Models
{
public class StudentMastersAppContext : DbContext
{
public DbSet Students { get; set; }
}
}
接下来,需要在Startup.cs中添加Entity Framework服务。可以从解决方案资源管理器中找到Startup.cs文件。
打开Startup.cs文件,可以看到默认情况下ApplicationDBContext将被添加到ConfigureServices方法中。
现在,可以添加一个额外的DBContext为StudentMastersAppContext,如下代码:
public void ConfigureServices(IServiceCollection services)
{
// Add framework services.
services.AddEntityFramework()
.AddSqlServer()
.AddDbContext(options =>
options.UseSqlServer
(Configuration[
"Data:DefaultConnection:ConnectionString"
]));
services.AddIdentity()
.AddEntityFrameworkStores()
.AddDefaultTokenProviders();
services.AddMvc();
// AddEntity Frameworkservices.AddEntityFramework()
.AddSqlServer()
.AddDbContext(options =>
options.UseSqlServer
(Configuration[
"Data:DefaultConnection:ConnectionString"
]));
// Add application services.
services.AddTransient();
services.AddTransient();
}
要添加Scaffolding,右键单击Controller文件夹,然后点击添加->新Scaffolding项。
选择MVC6 Controller with Views, 使用Entity Framework,然后点击添加。
现在,需要选择新创建的Model类和DataContext类。
Model Class: 在Model Class中,选择创建的Model类,即“StudentMasters”。
Data Context Class: 在Data Context中,选择创建的DBContext类,即“StudentMastersAppContext”。
是的,现在完成了。可以看到一个新的Controller类“StudentMastersController.cs”将在Controllers文件夹中创建。
可以看到这个“StudentMastersController.cs”控制器类将为Student Master CRUD操作自动生成代码。
在Views文件夹中,可以看到StudentMasters自动视图将为CRUD操作创建。在这里,不需要为CRUD操作编写任何代码。但如果需要,可以自定义这个控制器和视图。
在此之前,必须创建一个新的菜单以查看Students页面。
要添加菜单,点击Views文件夹->打开Shared文件夹,然后打开layout.cshtml页面。
在layout.cshtml文件中,可以找到以下代码:
可以删除About和Contact菜单,并添加学生菜单,使用控制器名称,如下代码: