65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 Scaffolding 和 Entity Framework 进行 CRUD

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.96/5 (16投票s)

2016年3月1日

CPOL

4分钟阅读

viewsIcon

84037

downloadIcon

1809

在本文中,我们将详细介绍如何使用脚手架创建一个简单的学生主数据 CRUD(创建/读取/更新和删除)操作。

引言

什么是脚手架?

使用脚手架进行 CRUD 操作非常简单。是的,脚手架会自动为控制器和视图生成代码,用于执行我们的 CRUD 操作,只需选择我们的 MVC 模型和 DBContext。它通过消除编写创建 CRUD 页面的单行代码的需要,为开发人员节省了时间。脚手架将使用模型和我们的 DBContext 为我们的 CRUD 操作生成自动代码。在本文中,我们将详细介绍如何在我们的项目中为我们的学生主数据 CRUD 添加脚手架。

参考

必备组件

Using the Code

安装完 Visual Studio 2015 和 ASP.NET 5 后,单击“开始”,然后单击“程序”,选择“Visual Studio 2015” -- 单击“Visual Studio 2015”。单击“新建”,然后单击“项目”,选择“Web”,然后选择“ASP.NET Web Application”。输入您的项目名称,然后单击“确定”。

在 ASP.NET 5 模板下选择 Web 应用程序,然后单击“确定”。

创建数据库

我们将使用我们的 SQL Server 数据库进行 CRUD 操作。首先,我们创建一个名为 StudentsDB 的数据库和一个名为 StudentMaster 的表。这是创建数据库表和在表中插入样本记录的 SQL 脚本。

USE MASTER 

GO 

-- 1) Check for the Database Exists .If the database is exist then drop and create new DB 

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 
) 

-- insert sample data to Student Master table 
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”。

在这里,我们的类将看起来像下面的图片。在这里,我们将添加我们的模型字段属性。

使用 System.ComponentModel.DataAnnotations 添加头文件;并将所有表字段名作为属性添加到此 model 类中,如下所示

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; }
       }
}

现在,我们已经创建了我们的模型;下一步是为我们的模型添加 DBContext

创建 DbContext

现在,我们需要为我们的 Entity Framework 创建一个 DBContext。与 Model Class 相同;向我们的 Models 文件夹添加一个新类。

右键单击 Models 文件夹,然后单击“添加新项”。选择“类”,并将类名输入为“StudentMastersAppContext.cs”。

在这里,我们的类将看起来像下面的屏幕截图

现在,我们首先需要使用 Microsoft.Data.Entity 添加 Entity Framework 的头文件;

接下来,将 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<StudentMasters> Students { get; set; }
       }
}

现在,我们可以创建我们的 DB context,下一步是为我们的 Entity Framework 添加一个 Service。

在 Startup.cs 中添加 Entity Framework Service

接下来,我们需要在 Startup.cs 中添加我们的 Entity Framework service。我们可以在解决方案资源管理器中找到 Startup.cs 文件。

打开 Startup.cs 文件,我们可以看到默认情况下 ApplicationDBContext 将在 ConfigureServices 方法中添加。

现在,我们可以像下面的代码一样为我们的 StudentMastersAppContext 添加另一个 DBContext

// Add Entity Framework
                      services.AddEntityFramework()
                     .AddSqlServer()
                     .AddDbContext<StudentMastersAppContext>(options =>
                       options.UseSqlServer
                       (Configuration["Data:DefaultConnection:ConnectionString"]));

ConfigureServices 方法中,我们添加如下代码

public void ConfigureServices(IServiceCollection services)
        {
            // Add framework services.
            services.AddEntityFramework()
                .AddSqlServer()
                .AddDbContext<ApplicationDbContext>(options =>
                    options.UseSqlServer
                    (Configuration["Data:DefaultConnection:ConnectionString"]));

            services.AddIdentity<ApplicationUser, IdentityRole>()
                .AddEntityFrameworkStores<ApplicationDbContext>()
                .AddDefaultTokenProviders();

            services.AddMvc();

                      // Add Entity Framework
                      services.AddEntityFramework()
                                 .AddSqlServer()
                                 .AddDbContext<StudentMastersAppContext>(options =>
                        options.UseSqlServer
                        (Configuration["Data:DefaultConnection:ConnectionString"]));

                      // Add application services.
                      services.AddTransient<IEmailSender, AuthMessageSender>();
            services.AddTransient<ISmsSender, AuthMessageSender>();
        }

下一步是添加脚手架。

添加脚手架

要添加脚手架,请右键单击 Controller 文件夹,然后单击“添加”->“新建脚手架项”。

选择带有视图的 MVC 6 控制器,使用 Entity Framework,然后单击“添加”。

现在,我们需要选择我们新创建的模型类和我们的数据上下文类。

模型类:在 Model Class 中,选择我们创建的 Model Class,名为“StudentMasters”。

数据上下文类:在 Data Context 中,选择我们创建的 DBContext class,名为“StudentMastersAppContext”。

是的,我们现在已经完成了。我们将在 Controllers 文件夹中看到一个名为“StudentMastersController.cs”的新 Controller 类。

我们可以看到这个“StudentMastersController.cs”控制器类将包含我们 Student Master CRUD 操作的自动生成代码。

Views 文件夹中,我们可以看到为我们的 CRUD 操作自动生成的 StudentMasters 视图。在这里,我们无需为 CRUD 操作编写任何代码。但是,如果需要,我们可以自定义此控制器和视图。

是的,现在一切都完成了,我们只需要运行我们的应用程序,就可以创建/编辑/删除和查看学生主数据。

添加学生菜单

在此之前,我们必须创建一个新菜单来查看我们的 Students 页面。

要添加菜单,请单击 Views Folder -> 打开 Shared Folder 并打开 layout.cshtml 页面。

layout.cshtml 文件中,我们可以找到以下代码

<div class="navbar-collapse collapse">
      <ul class="nav navbar-nav">
          <li><a asp-controller="Home" 
          asp-action="Index">Home</a></li>
          <li><a asp-controller="Home" 
          asp-action="About">About</a></li>
          <li><a asp-controller="Home" 
          asp-action="Contact">Contact</a></li>
       </ul>
                    @await Html.PartialAsync("_LoginPartial")

 </div>

我们可以删除 About 和 Contact 菜单,并添加我们的 Student 菜单,如以下代码所示,其中包含控制器名称

<div class="navbar-collapse collapse">
        <ul class="nav navbar-nav">
             <li><a asp-controller="Home" 
             asp-action="Index">Home</a></li>
             <li><a asp-controller="StudentMasters" 
             asp-action="Index">Student</a></li>
        </ul>
             @await Html.PartialAsync("_LoginPartial")
 </div>

运行程序

是的,现在一切都完成了,您简单的使用 ASP.NET 5 的 Student CRUD 操作已完成。现在按 F5 并运行项目 -- 您可以看到输出如下面的图片

在这里,我们将添加一个新的测试 student 详细信息,我们还可以看到 SQL Server 中更新的更改。

历史

  • 2016/03/01:初始版本
© . All rights reserved.