ASP.NET CORE-从零到英雄学习ADO.NET中的CRUD操作

ADO.NET ASP.NET Core中的CRUD操作

在此ASP.NET Core教程中,您将从一开始就学习在ADO.NET中进行CRUD操作。 本教程将帮助您学习ADO.NET,以便您可以开始使用C#在ASP.NET CORE中进行数据库编程。

从GitHub下载此应用程序的完整源代码
________________________________________________________

听众

本教程适用于希望快速学习ASP.NET Core和ADO.NET的每个人。 所有的事情都以简单和逐步的方式进行解释。 您可以下载完整的源代码,然后在PC上运行它们。

在这里,我将对SQL Server数据库中的教师表执行CRUD(创建,读取,更新和删除)操作。

我个人认为“学习任何编程语言的最佳方法是首先构建CRUD操作”。
本教程分为以下部分:
1.创建一个新的ASP.NET Core Web应用程序
2.配置ASP.NET Core Web应用程序
3.创建布局,ViewImports,ViewStart并添加Bootstrap
4.创建数据库
5.在应用程序中添加数据库的连接字符串
6.添加教师模型班
7.添加客户端验证功能
8.执行创建教师功能
9.执行READ教师功能
10.执行UPDATE老师功能
11.执行DELETE教师功能
1.创建一个新的ASP.NET Core Web应用程序

在您的Visual Studio中,选择“文件>新建项目”。 一个新的窗口将在这里打开:

一个。 在左侧,选择“ Installed > Visual C# > Web ”。
b。 在中间部分,选择“ ASP.NET Core Web Application ”。
C。 在下部,将项目名称命名为“ CRUDADO ”或您想要的任何名称,然后选择驱动器上将存储项目文件的位置。 还要选择选项-“ Create directory for solution ”,最后单击“ OK ”按钮来创建您的项目。
创建ASP.NET Core Web应用程序

接下来,将打开一个新窗口,要求您选择项目模板,.net框架和其他内容。 在此窗口中,请确保选择以下内容:

一个。 在顶部的2个下拉列表中,选择“ .NET Core ”和“ ASP.NET Core 2.0 ”。 您还可以选择大于2.0的ASP.NET Core版本。
b。 选择“ Empty ”项目模板。
C。 单击“ OK ”按钮以创建您的ASP.NET Core Web应用程序
选择ASP.NET Core应用程序的属性
2.配置ASP.NET Core Web应用程序

您的应用程序应支持MVC框架,路由和静态文件。 所有这些都可以从位于应用程序根目录中的'Startup.cs'类完成。

打开Startup.cs类,并在ConfigureServices()Configure()方法内添加这些支持,如下所示:

using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.DependencyInjection;
namespace CRUDADO
{
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
}
        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseStaticFiles();
app.UseDeveloperExceptionPage();
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
}
}
}
3.创建布局,ViewImports,ViewStart并添加Bootstrap

在项目的根目录中创建“ Views ”文件夹,并在其中创建“ Shared ”文件夹。

接下来,右键单击“ Shared ”文件夹,然后选择“ Add > New Item ”。 您将获得一个显示项目列表的新窗口,从该列表中选择“ MVC View Layout Page ”,然后单击“ Add ”按钮。

这会将_Layout.cshtml文件添加到Shared文件夹中,并且将打开以进行编辑。 您需要向其中添加以下代码:

<!DOCTYPE html>
<html>
<head>
<title>@ViewData["Title"]</title>
<meta name="viewport" content="width=device-width" />
<link href="/lib/bootstrap/dist/css/bootstrap.css" rel="stylesheet" />
</head>
<body class="m-1 p-1">
@RenderBody()
</body>
</html>

接下来,下载Bootstrap软件包,并将Bootstrap zip文件内容解压缩到项目的' wwwroot > lib '文件夹中。

Bootstrap用于创建移动友好的响应式布局。 它是世界上最受欢迎的CSS框架。

接下来,右键单击“ Views ”文件夹,然后选择“ Add > New Item ”。 在项目列表中,选择“ MVC View Imports Page ”,然后单击“ Add ”按钮。 这将添加_ViewImports.cshtml文件。

通过将以下代码添加到该文件中,为视图导入内置的标签助手和模型名称空间:

@using CRUDADO.Models
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers

同样,右键单击“ Views ”文件夹,然后选择“ Add > New Item ”。 在项目列表中,选择“ MVC View Start Page ”,然后单击“ Add ”按钮。

这将使用以下初始代码添加_ViewStart.cshtml文件:

@{
Layout = "_Layout";
}

它告诉所有视图将具有_Layout.cshtml文件中的布局,该文件位于Shared文件夹内。

4.创建数据库

您必须在PC中安装SQL Server 2017(任何版本)。 但是,其他任何版本的SQL Server(如2016、2008、2012)也可以使用。 您可以使用免费使用的SQL Server 2017开发人员版和Express版- 下载SQL Server 2017

接下来,您需要连接到SQL Server,这可以使用Visual Studio中的SQL Server对象资源管理器来完成 。 因此, View > SQL Server Object Explorer in Visual Studio选择“ View > SQL Server Object Explorer in Visual StudioView > SQL Server Object Explorer in Visual Studio ”。

当“ SQL Server Object Explorer ”窗口打开时,右键单击“ SQL Server”节点,然后选择“ Add SQL Server

添加SQL Server

接下来, Connect打开一个“ Connect窗口。 在此窗口中,选择“ Browse ”选项卡,然后单击“ Local ”节点以将其打开。

在此节点内,选择第二个选项(localdb)\MSSQLLocalDB 。 选择它之后,您会注意到在同一窗口中的“ Server Name: ”字段现在具有(localdb)\MSSQLLocalDB值。

现在,您只需单击“ Connect按钮即可连接到SQL Server。 见下图:

在SQL Server对象资源管理器中连接SQL Server

在几秒钟的时间内,SQL Server将被连接并可以使用。

接下来,右键单击“ Databases节点,然后选择“ Add New Database.

添加新数据库

在对话框中,输入School作为数据库名称,然后单击“ OK以创建数据库。

创建学校数据库

学校数据库已创建且为空。 因此,现在首先创建“ Teacher”表。

单击“ School数据库名称前面给出的►符号以打开其中的各个节点。

接下来,右键单击Tables节点,然后选择Add New Table

在Visual Studio中将打开一个Table Design Window 。 您可以在此处添加“教师”表的字段。

在此窗口的T-SQL选项卡中,您可以输入以下脚本来创建“ Teacher ”表:

CREATE TABLE [dbo].[Teacher]
(
[Id] INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
[Name] VARCHAR(50) NOT NULL,
[Skills] VARCHAR(250) NOT NULL,
[TotalStudents] INT NOT NULL,
[Salary] MONEY NOT NULL,
[AddedOn] DATE NOT NULL DEFAULT GETDATE()
)

接下来,单击“ Update按钮以开始此表的创建过程,请参见下图,该图对此进行了说明:

表格设计窗口

您将获得一个名为“ Preview Database Updates ”的新对话框。 在这里单击“ Update Database ”按钮,然后将在几秒钟内创建库存表。

预览数据库更新窗口

您可以在“表”节点中找到此新创建的表。

“教师”表有6列,分别是:

1. Id —主键列,由于具有Identity(1,1)属性,因此将从1自动生成。
2.名称-用于存储教师姓名的varchar(50)列。
3.技能-用于存储老师的技能。
4. TotalStudents —一个Int列,用于存储给定老师教的学生总数。
5.薪金-用于存储老师的薪水。
6.AddedOn —用于存储创建记录的时间。 该列具有日期类型,并且使用GETDATE()SQL函数自动获取当前时间。

请注意,这些列具有NOT NULL属性,因此它们不能包含NULL。

5.在应用程序中添加数据库的连接字符串

连接字符串将参数存储到数据库,并用于将应用程序连接到数据库。 这些参数是驱动程序的名称,服务器名称和数据库名称。 它还包含安全性信息,例如数据库连接所需的用户名和密码。

连接字符串存储在appsettings.json文件中,该文件位于应用程序的根目录中。

在解决方案资源管理器中右键单击项目名称,然后选择Add > New Item 。 然后,在“ Add New Item ”窗口打开时,选择ASP.NET Configuration file文件,并将其命名为appsettings.json (请参见下图)。 最后点击“ Add ”按钮。

添加appsettings.json文件

该文件将被创建并打开以在Visual Studio中进行编辑。 向其添加以下连接字符串:

{
"ConnectionStrings": {
"DefaultConnection": "Server= (localdb)\\MSSQLLocalDB;Database=School;Trusted_Connection=True;MultipleActiveResultSets=true"
}
}

我在连接字符串中将可信连接定义为true,因此使用当前用户的Windows凭据对SQL Server进行身份验证。

6.添加教师模型班

在解决方案资源管理器中右键单击项目名称,然后选择“ Add > New Folder ”。 将该文件夹命名为“ Models ”。 然后右键单击此“ Models ”文件夹,然后选择“ Add > New Item ”。

在打开的窗口中,选择一个新班级并将其命名为教师。 将以下属性添加到此类:

using CRUDADO.CustomValidation;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Threading.Tasks;
namespace CRUDADO.Models
{
public class Teacher
{
[Required]
public int Id { get; set; }
        [Required]
public string Name { get; set; }
        [Required]
[SkillsValidate(Allowed = new string[] { "ASP.NET Core", "ASP.NET MVC", "ASP.NET Web Forms" }, ErrorMessage = "You skills are invalid")]
public string Skills { get; set; }
        [Range(5, 50)]
public int TotalStudents { get; set; }
        [Required]
public decimal Salary { get; set; }

[Required]
public DateTime AddedOn { get; set; }
}
}

此类在数据库的Teacher表中的6列中具有6个属性。 我已经在ID,名称,技能,薪水和AddedOn属性中应用了[Required]属性,TotalStudent属性与[Range]属性一起应用,因此它只允许5到50的值。

还要注意应用于技能属性的[SkillsValidate]属性。 [SkillsValidate]属性是一个自定义验证属性,通过该属性我将强制Skills属性仅接受以下3个值:

1. ASP.NET Core
2. ASP.NET MVC
3. ASP.NET Web表单

接下来,我将创建[SkillsValidate]自定义验证属性。 因此,在应用程序的根目录上创建一个新文件夹,并将其命名为“ CustomValidation ”。 在此文件夹中,添加一个名为“ SkillsValidate.cs ”的新类, SkillsValidate.cs其中添加以下代码:

using Microsoft.AspNetCore.Mvc.ModelBinding.Validation;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace CRUDADO.CustomValidation
{
public class SkillsValidate : Attribute, IModelValidator
{
public string[] Allowed { get; set; }
public string ErrorMessage { get; set; }

public IEnumerable<ModelValidationResult> Validate(ModelValidationContext context)
{
if (Allowed.Contains(context.Model as string))
return Enumerable.Empty<ModelValidationResult>();
else
return new List<ModelValidationResult> {
new ModelValidationResult("", ErrorMessage)
};
}
}
}
7.添加客户端验证功能

客户端验证功能由“ jQuery ”和2个验证插件执行,它们分别是:

1. jQuery验证
2. jQuery验证不引人注目

要安装这3个Package Manager Console ,请在“ Package Manager Console ”窗口中运行以下命令:

PM> Install-Package jQuery -Version 3.3.1
PM> Install-Package jQuery.Validation -Version 1.17.0
PM> Install-Package jQuery.Validation.Unobtrusive -Version 2.0.20710
8.执行创建教师功能

在应用程序的根目录上创建“ Controllers ”文件夹。 在此文件夹中,添加一个名为' HomeController.cs'的新控制器。 控制器将具有如下所示的初始代码:

using System.Collections.Generic;
using System.Linq;
using Microsoft.AspNetCore.Mvc;
namespace CRUDADO.Controllers
{
public class HomeController : Controller
{
public IActionResult Index()
{
return View();
}
}
}

连接字符串保存在appsettings.json文件中。 要访问此文件,我必须通过“依赖关系注入”功能获取IConfiguration接口的对象。 因此,我必须在HomeController的构造函数中添加IConfiguration接口,并且MVC框架将自动为其提供对象。

因此,将家用控制器的代码更改为如下所示:

using System.Collections.Generic;
using System.Linq;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Configuration;
namespace CRUDADO.Controllers
{
public class HomeController : Controller
{
public IConfiguration Configuration { get; }
public HomeController(IConfiguration configuration)
{
Configuration = configuration;
}

public IActionResult Index()
{
return View();
}
}
}

创建教师功能是通过一种称为“ CREATE ”的新操作方法完成的。 因此,如下所示将Create Action方法添加到Home Controller中:

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Threading.Tasks;
using CRUDADO.Models;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Configuration;
namespace CRUDADO.Controllers
{
public class HomeController : Controller
{
public IConfiguration Configuration { get; }
public HomeController(IConfiguration configuration)
{
Configuration = configuration;
}
        public IActionResult Index()
{
return View();
}
        public IActionResult Create()
{
return View();
}
        [HttpPost]
public IActionResult Create_Post(Teacher teacher)
{
if (ModelState.IsValid)
{
string connectionString = Configuration["ConnectionStrings:DefaultConnection"];
using (SqlConnection connection = new SqlConnection(connectionString))
{
string sql = $"Insert Into Teacher (Name, Skills, TotalStudents, Salary) Values ('{teacher.Name}', '{teacher.Skills}','{teacher.TotalStudents}','{teacher.Salary}')";
                    using (SqlCommand command = new SqlCommand(sql, connection))
{
command.CommandType = CommandType.Text;
connection.Open();
command.ExecuteNonQuery();
connection.Close();
}
return RedirectToAction("Index");
}
}
else
return View();
}
}
}

在Create Action方法中,我在下面的代码行中获得了连接字符串:

string connectionString = Configuration["ConnectionStrings:DefaultConnection"];

然后,我使用SqlCommand对象通过运行插入SQL查询来插入教师的记录:

string sql = $"Insert Into Teacher (Name, Skills, TotalStudents, Salary) Values ('{teacher.Name}', '{teacher.Skills}','{teacher.TotalStudents}','{teacher.Salary}')";

接下来,在应用程序的根目录中添加“ Views ”文件夹。 在此文件夹中,创建一个名为“ Home”的新文件夹。

接下来,在此“ Home ”文件夹中创建一个名为“ Create.cshtml ”的新视图(即“ Views>Home ”)。 将以下代码添加到该视图:

@model Teacher
@{
Layout = "_Layout";
var title = "CREATE Teacher";
ViewData["Title"] = title;
}
<style>
.input-validation-error {
border-color: red;
}
</style>
<h2>@title</h2>
< div asp-validation-summary ="ModelOnly" class="text-danger"></ div >
< form class="m-1 p-1" method="post">
<div class="form-group">
< label asp-for ="Name"></ label >
< input asp-for ="Name" class="form-control" />
< span asp-validation-for ="Name" class="text-danger"></ span >
</div>
    <div class="form-group">
< label asp-for ="Skills"></ label >
< input asp-for ="Skills" type ="text" class="form-control" />
< span asp-validation-for ="Skills" class="text-danger"></ span >
</div>
    <div class="form-group">
< label asp-for ="TotalStudents"></ label >
< input asp-for ="TotalStudents" type ="text" class="form-control" />
< span asp-validation-for ="TotalStudents" class="text-danger"></ span >
</div>
    <div class="form-group">
< label asp-for ="Salary"></ label >
< input asp-for ="Salary" type ="text" class="form-control" />
< span asp-validation-for ="Salary" class="text-danger"></ span >
</div>
<button type="submit" class="btn btn-primary">Submit</button></ form >
<script src="/lib/jquery/dist/jquery.min.js"></script>
<script src="/lib/jquery-validation/dist/jquery.validate.min.js"></script>
<script src="/lib/jquery-validation-unobtrusive/dist/jquery.validate.unobtrusive.min.js"></script>

该视图具有类型为“ Teacher ”的模型,它为“ Name, Skills, TotalStudents and Salary ”创建输入字段,以便用户可以填写并提交。

单击“提交”按钮后,将调用HttpPost类型的“创建动作”,并创建新的教师记录。

请注意3个脚本文件,它们对视图中的输入字段进行客户端验证:

<script src="/lib/jquery/dist/jquery.min.js"></script>
<script src="/lib/jquery-validation/dist/jquery.validate.min.js"></script>
<script src="/lib/jquery-validation-unobtrusive/dist/jquery.validate.unobtrusive.min.js"></script>

如果要通过EF核心执行记录插入,则需要查看本教程— 在Entity Framework Core中插入记录

测试创建教师功能

运行该应用程序,然后在浏览器中转到“ Create ”视图的URL,它是— http://localhost:52730/Home/Create 。 您将在浏览器中看到“创建教师”表单。

在不填写任何字段的情况下,按Submit按钮,您将看到jQuery Validation插件显示的验证错误。

教师表格上的jQuery验证

现在填写所有字段(如下图所示),然后单击提交按钮。

创建老师

教师记录将在数据库中创建,您将被重定向到当前为空的索引视图。

您可以确认记录已插入“教师”表中。 为此,转到“ SQL Server Object Explorer ”,然后右键单击“ Teacher ”表并选择“ View Data ”。

教师表将打开,您将在其中看到新的教师记录,请参见下图:

教师记录插入数据库
9.执行READ教师功能

现在,我们将创建READ教师功能。 因此,在“主控制器”中更改“索引操作”以将所有教师返回到“视图”,如下所示:

public IActionResult Index()
{
List<Teacher> teacherList = new List<Teacher>();
string connectionString = Configuration["ConnectionStrings:DefaultConnection"];
    using (SqlConnection connection = new SqlConnection(connectionString))
{
//SqlDataReader
connection.Open();

string sql = "Select * From Teacher";SqlCommand command = new SqlCommand(sql, connection);
using (SqlDataReader dataReader = command.ExecuteReader())
{
while (dataReader.Read())
{
Teacher teacher = new Teacher();
teacher.Id = Convert.ToInt32(dataReader["Id"]);
teacher.Name = Convert.ToString(dataReader["Name"]);
teacher.Skills = Convert.ToString(dataReader["Skills"]);
                teacher.TotalStudents = Convert.ToInt32(dataReader["TotalStudents"]);
teacher.Salary = Convert.ToDecimal(dataReader["Salary"]);
teacher.AddedOn = Convert.ToDateTime(dataReader["AddedOn"]);
                teacherList.Add(teacher);
}
}
connection.Close();
}
return View(teacherList);
}

在此操作中,我使用SqlCommand's ExecuteReader()方法执行“ Select * from Teacher ”查询,以获取SqlDataReader对象。

然后,我使用SqlDataReader的.Read()方法遍历所有记录,并创建一个包含所有教师记录的教师列表对象。 在代码的最后,该对象作为模型返回到视图。

接下来,使用以下代码在“ Views/Home/ ”文件夹中添加“ Index ”视图:

@model IEnumerable<Teacher>
@{
Layout = "_Layout";
var title = "READ Teacher";
ViewData["Title"] = title;
}
<h2>@title</h2>
<h3>< a asp-action ="Create" class="btn btn-sm btn-secondary">Create</ a ></h3>
<table class="table table-bordered table-sm table-striped">
<thead>
<tr>
<th>Id</th>
<th>Name</th>
<th>Skills</th>
<th>Total Students</th>
<th>Salary</th>
<th>Added On</th>
<th>Update</th>
<th>Delete</th>
</tr>
</thead>
<tbody>
@if (Model == null)
{
<tr>
<td colspan="7" class="text-center">No Model Data</td>
</tr>
}
else
{
@foreach (var p in Model)
{
<tr>
<td>@p.Id</td>
<td>@p.Name</td>
<td>@p.Skills</td>
<td>@p.TotalStudents</td>
<td>@string.Format(new System.Globalization.CultureInfo("en-US"), "{0:C2}", p.Salary)</td>
<td>@string.Format("{0:dddd, dd MMMM yyyy}", p.AddedOn)</td>
<td>< a asp-action ="Update" asp-route-id ="@p.Id">Update</ a ></td>
<td>
< form asp-action ="Delete" method="post" asp-route-id ="@p.Id">
<button>Delete</button>
</ form >
</td>
</tr>
}
}
</tbody>
</table>

注意,我还在表的thead和tbody元素中创建了Update和Delete功能的列:

<table class="table table-bordered table-sm table-striped">
<thead>
<tr>
<th>Id</th>
<th>Name</th>
<th>Skills</th>
<th>Total Students</th>
<th>Salary</th>
<th>Added On</th>
<th>Update</th>
<th>Delete</th>
</tr>
</thead>
<tbody>
    else
{
@foreach (var p in Model)
{
<tr>
                <td>< a asp-action ="Update" asp-route-id ="@p.Id">Update</ a ></td>
<td>
< form asp-action ="Delete" method="post" asp-route-id ="@p.Id">
<button>Delete</button>
</ form >
</td>
</tr>
}
}
</tbody>
</table>

我们将在下一部分中创建更新和删除功能。

您不能错过的相关教程- 阅读Entity Framework Core中的记录

测试阅读老师功能

运行您的应用程序,您将看到“教师”的表记录显示在“索引视图”中。 如下图所示:

阅读教师视图
10.执行UPDATE Teacher功能

通过向本地控制器添加更新操作方法来完成更新功能。 以下是添加到控制器的代码:

public IActionResult Update(int id)
{
string connectionString = Configuration["ConnectionStrings:DefaultConnection"];
Teacher teacher = new Teacher();
    using (SqlConnection connection = new SqlConnection(connectionString))
{
string sql = $"Select * From Teacher Where Id='{id}'";
SqlCommand command = new SqlCommand(sql, connection);
connection.Open();
        using (SqlDataReader dataReader = command.ExecuteReader())
{
while (dataReader.Read())
{
teacher.Id = Convert.ToInt32(dataReader["Id"]);
teacher.Name = Convert.ToString(dataReader["Name"]);
teacher.Skills = Convert.ToString(dataReader["Skills"]);
                teacher.TotalStudents = Convert.ToInt32(dataReader["TotalStudents"]);
                teacher.Salary = Convert.ToDecimal(dataReader["Salary"]);
                teacher.AddedOn = Convert.ToDateTime(dataReader["AddedOn"]);
}
}
connection.Close();
}
return View(teacher);
}
[HttpPost]
[ActionName("Update")]
public IActionResult Update_Post(Teacher teacher)
{
string connectionString = Configuration["ConnectionStrings:DefaultConnection"];
using (SqlConnection connection = new SqlConnection(connectionString))
{
string sql = $"Update Teacher SET Name='{teacher.Name}', Skills='{teacher.Skills}', TotalStudents='{teacher.TotalStudents}', Salary='{teacher.Salary}' Where Id='{teacher.Id}'";
        using (SqlCommand command = new SqlCommand(sql, connection))
{
connection.Open();
command.ExecuteNonQuery();
connection.Close();
}
}
return RedirectToAction("Index");
}

HttpGet版本的Update操作方法在其参数中使用教师的“ id ”,然后使用SqlCommand对象运行名为Select * From Teacher Where Id='{id}'的SQL查询。 它获取教师记录的值,并将其返回到更新视图。

HttpPost版本的Update Action方法使用SqlCommand '对象来实际更新教师的记录。 要注意的重要事项是更新查询,它是:

string sql = $"Update Teacher SET Name='{teacher.Name}', Skills='{teacher.Skills}', TotalStudents='{teacher.TotalStudents}', Salary='{teacher.Salary}' Where Id='{teacher.Id}'";

接下来,使用以下代码在“ Views / Home /”文件夹中创建更新视图:

@model Teacher
@{
Layout = "_Layout";
var title = "UPDATE Teacher";
ViewData["Title"] = title;
}
<style>
.input-validation-error {
border-color: red;
}
</style>
<h2>@title</h2>
< div asp-validation-summary ="ModelOnly" class="text-danger"></ div >
< form class="m-1 p-1" method="post">
<div class="form-group">
< label asp-for ="Id"></ label >
< input asp-for ="Id" type ="text" readonly class="form-control" />
</div
<div class="form-group">
< label asp-for ="Name"></ label >
< input asp-for ="Name" type ="text" class="form-control" />
< span asp-validation-for ="Name" class="text-danger"></ span >
</div>
<div class="form-group">
< label asp-for ="Skills"></ label >
< input asp-for ="Skills" type ="text" class="form-control" />
< span asp-validation-for ="Skills" class="text-danger"></ span >
</div>
<div class="form-group">
< label asp-for ="TotalStudents"></ label >
< input asp-for ="TotalStudents" type ="text" class="form-control" />
< span asp-validation-for ="TotalStudents" class="text-danger"></ span >
</div>
<div class="form-group">
< label asp-for ="Salary"></ label >
< input asp-for ="Salary" type ="text" class="form-control"/>
< span asp-validation-for ="Salary" class="text-danger"></ span >
</div>
<div class="form-group">
< label asp-for ="AddedOn"></ label >
< input asp-for ="AddedOn" type ="text" class="form-control" asp-format ="{0:d}" />
</div>
<button type="submit" class="btn btn-primary">Submit</button>
</ form >
<script src="/lib/jquery/dist/jquery.min.js"></script>
<script src="/lib/jquery-validation/dist/jquery.validate.min.js"></script><script src="/lib/jquery-validation-unobtrusive/dist/jquery.validate.unobtrusive.min.js"></script>

该视图类似于我们之前创建的索引视图。 我已将“ Id”字段设为只读,以便用户无法更改它。

测试Update Teacher功能

运行您的应用程序,然后单击“更新”链接以获取第一个教师记录,请参见下图:

点击更新链接

该记录将打开以进行更新。 将名称更改为“ Bill Gates ”,并将薪水更改为“ 100000000 ”。 最后单击提交按钮,如下图所示:

更新记录

记录将被更新,您将被重定向到索引视图,在其中您可以看到更新的记录字段,如下图所示:

记录已更新
11.执行DELETE教师功能

在Home Controller中创建Delete Action方法,其代码如下:

HttpPost]
public IActionResult Delete(int id)
{
string connectionString = Configuration["ConnectionStrings:DefaultConnection"]
using (SqlConnection connection = new SqlConnection(connectionString))
{
string sql = $"Delete From Teacher Where Id='{id}'";
using (SqlCommand command = new SqlCommand(sql, connection))
{
connection.Open();
try
{
command.ExecuteNonQuery();
}
catch (SqlException ex)
{
ViewBag.Result = "Operation got error:" + ex.Message;
}
connection.Close();
}
}
return RedirectToAction("Index");
}

此方法在其参数中获取教师记录的ID,然后执行Delete SQL查询:

string sql = $"Delete From Teacher Where Id='{id}'";

测试删除教师功能

运行您的应用程序,然后针对任何记录单击给出的“删除”链接。 检查以下显示记录删除过程的图像:

删除连结
记录已删除

从GitHub下载此应用程序的完整源代码
________________________________________________________

结论

这样就可以使用ADO.NET在ASP.NET Core中完成本CRUD操作教程。 希望您喜欢阅读本文并了解代码的工作方式。 如果您有任何疑问,请浏览所有可从此处下载的代码。

跟着我

我希望您能在本教程中找到一些新知识来增加您的Web开发知识。

如果是这样,那就别忘了鼓掌几次以示自己的喜好。 它不仅会带给我不好的笑容,而且会激励我为Web开发人员写越来越多的好文章。

与往常一样,每当我在Medium上发表新文章时,请关注我以获取通知。

我还在HACKERNOON上发布了另一篇教程,您也希望看到它 -7个常见的Web开发问题,从初学者到专家的每个开发人员都应该知道[具有多种解决方案]

From: https://hackernoon.com/asp-net-core-learn-crud-operations-in-ado-net-from-zero-to-hero-a0109ed2f8a4

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值