在此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
”按钮来创建您的项目。
接下来,将打开一个新窗口,要求您选择项目模板,.net框架和其他内容。 在此窗口中,请确保选择以下内容:
一个。 在顶部的2个下拉列表中,选择“.NET Core
”和“ASP.NET Core 2.0
”。 您还可以选择大于2.0的ASP.NET Core版本。
b。
选择“ Empty
”项目模板。
C。
单击“ OK
”按钮以创建您的ASP.NET Core Web应用程序
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 Studio
的View > SQL Server Object Explorer in Visual Studio
”。
当“ SQL Server Object Explorer
”窗口打开时,右键单击“ SQL Server”节点,然后选择“ Add SQL Server
。
接下来, Connect
打开一个“ Connect
窗口。 在此窗口中,选择“ Browse
”选项卡,然后单击“ Local
”节点以将其打开。
在此节点内,选择第二个选项(localdb)\MSSQLLocalDB
。 选择它之后,您会注意到在同一窗口中的“ Server Name:
”字段现在具有(localdb)\MSSQLLocalDB
值。
现在,您只需单击“ Connect
按钮即可连接到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
”按钮。
该文件将被创建并打开以在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插件显示的验证错误。
现在填写所有字段(如下图所示),然后单击提交按钮。
教师记录将在数据库中创建,您将被重定向到当前为空的索引视图。
您可以确认记录已插入“教师”表中。 为此,转到“ 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