在本教程中,我们将创建一个项目来使用 Microsoft Asp .NET Core 6 和 EntityFrameworkCore 执行 CRUD 操作。我们在本教程中使用 Visual Studio 2022 和 MS SQL 或MySQL服务器。
目录- 使用 EntityFrameworkCore 的 ASP.NET Core Mvc (.NET 6) CRUD 操作
- 介绍
- 我们将要学习什么...... – Glimpse
- 打开 Visual Studio 并单击创建新项目
- 选择 ASP.NET Core Web App (Model-View-Controller) – [C#] 并点击下一步按钮
- 输入项目名称,然后单击下一步按钮
- 选择 .Net 6.0 ,身份验证类型 None 并单击创建按钮
- 创建后,您的项目将如下所示
- 打开 Models 文件夹并创建一个 Employee 类
- 根据您的 .NET Core 版本安装以下包
- 创建 DBContext 类的子类 ApplicationDbContext 以链接数据库和数据模型类
- 打开 appsettings.json 并配置连接字符串
- 打开 program.cs 文件并添加所需的服务
- 运行迁移
- 迁移文件
- 运行以下更新命令以根据此迁移文件更新数据库
- 迁移后的数据库视图
- 添加员工控制器
- 将以下代码粘贴到您的 EmployeeControler.cs 文件中
- 添加视图文件
- Index.cshtml 代码
- 创建.cshtml
- 编辑.cshtml
- 删除.cshtml
- 留下回复 取消回复
- 相关文章
- 带有 Bootstrap 5 的最佳 Laravel 8 CRUD 教程
开始吧
第1步
打开 Visual Studio 并单击创建新项目第2步
选择 ASP.NET Core Web App (Model-View-Controller) – [C#] 并点击下一步按钮步骤 - 3
输入项目名称,然后单击下一步按钮第四步
选择 .Net 6.0 ,身份验证类型 None 并单击创建按钮 创建后,您的项目将如下所示步骤 - 5
打开 Models 文件夹并创建一个 Employee 类在员工类中输入以下代码
using System.ComponentModel.DataAnnotations;
namespace EmployeeCRUD.Models
{
public class Employee
{
[Key]
public int Id { get; set; }
[Required]
[Display(Name ="Employee Name")]
public string Name { get; set; }
public string Designation { get; set; }
[DataType(DataType.MultilineText)]
public string Address { get; set; }
public DateTime? RecordCreatedOn { get; set; }
}
}
步骤 - 6
根据您的 .NET Core 版本安装以下包步骤 - 7
创建一个子类ApplicationDbContext of DBContext Class来链接数据库和数据模型类- 创建一个文件夹并将其命名为 Data
- 创建 ApplicaitonDbContext 类并输入以下代码
using EmployeeCRUD.Models;
using Microsoft.EntityFrameworkCore;
namespace EmployeeCRUD.Data
{
public class ApplicationDbContext:DbContext
{
public ApplicationDbContext(DbContextOptions options):base(options)
{
}
public DbSet Employees { get; set; }
}
}
在上面的代码中,我们使用构造函数传递参数 DbContextOptions,使用它我们将上下文配置从 AddDbContext 传递到 DbContext
步骤 - 8
打开 appsettings.json 并配置连接字符串appsettings.json 文件的以下代码带有示例数据。根据您的系统或开发环境设置替换示例数据。
{
"ConnectionStrings": {
"DefaultConnection": "Server=EnterServerName; Database=EmployeeDatabase; User Id=sa; Password=EnterPassword; Trusted_Connection=True; MultipleActiveResultSets=true"
},
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*"
}
使用MySQL时,文件内容如下:
{
"ConnectionStrings": {
"DefaultConnection": "server=localhost;user=root;database=customerdb;port=3306;password=root"
},
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*"
}
步骤 - 9
打开 program.cs 文件并添加所需的服务- 将 ApplicationDbContext 子类注册为应用程序服务提供者/依赖注入容器中的范围服务。
- 输入以下代码行注册ApplicaitonDbContext
// add
builder.Services.AddDbContext(
options => options.UseSqlServer(
builder.Configuration.GetConnectionString("DefaultConnection")
));
使用MySQL时,文件内容如下:
// add
builder.Services.AddDbContext(
options => options.UseMySql(
builder.Configuration.GetConnectionString("DefaultConnection"), ServerVersion.AutoDetect(builder.Configuration.GetConnectionString("DefaultConnection")))
);
Program.cs 文件
using EmployeeCRUD.Data;
using Microsoft.EntityFrameworkCore;
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddControllersWithViews();
// add
builder.Services.AddDbContext(
options => options.UseSqlServer(
builder.Configuration.GetConnectionString("DefaultConnection")
));
var app = builder.Build();
// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Home/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
app.Run();
使用MySQL时,文件内容如下:
using EmployeeCRUD.Data;
using Microsoft.EntityFrameworkCore;
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddControllersWithViews();
// add
builder.Services.AddDbContext(
options => options.UseMySql(
builder.Configuration.GetConnectionString("DefaultConnection"), ServerVersion.AutoDetect(builder.Configuration.GetConnectionString("DefaultConnection")))
);
var app = builder.Build();
// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Home/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
app.Run();
步骤 - 10
运行迁移- 打开包管理器控制台
键入以下命令以运行迁移
add-migration 'initial'
迁移文件
以下是迁移文件的代码。您可以在 Migration 文件夹下找到此文件 (20220109062010_initial.cs)
using System;
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace EmployeeCRUD.Migrations
{
public partial class initial : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable(
name: "Employees",
columns: table => new
{
Id = table.Column(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
Name = table.Column(type: "nvarchar(max)", nullable: false),
Designation = table.Column(type: "nvarchar(max)", nullable: false),
Address = table.Column(type: "nvarchar(max)", nullable: false),
RecordCreatedOn = table.Column(type: "datetime2", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_Employees", x => x.Id);
});
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "Employees");
}
}
}
使用MySQL时,文件内容如下:
using System;
using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace EmployeeCRUD.Migrations
{
public partial class initial : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AlterDatabase()
.Annotation("MySql:CharSet", "utf8mb4");
migrationBuilder.CreateTable(
name: "Employees",
columns: table => new
{
Id = table.Column(type: "int", nullable: false)
.Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn),
Name = table.Column(type: "longtext", nullable: false)
.Annotation("MySql:CharSet", "utf8mb4"),
Designation = table.Column(type: "longtext", nullable: false)
.Annotation("MySql:CharSet", "utf8mb4"),
Address = table.Column(type: "longtext", nullable: false)
.Annotation("MySql:CharSet", "utf8mb4"),
RecordCreatedOn = table.Column(type: "datetime(6)", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_Employees", x => x.Id);
})
.Annotation("MySql:CharSet", "utf8mb4");
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "Employees");
}
}
}
步骤 - 11
运行以下更新命令以根据此迁移文件更新数据库update-database迁移后的数据库视图
步骤 - 12
添加员工控制器- 右键单击员工文件夹
- 点击添加
- 点击控制器
4. 选择 MVC Controller Empty 并点击 Add 按钮
5.输入控制器名称并按添加按钮
步骤 - 13
将以下代码粘贴到您的 EmployeeControler.cs 文件中
using EmployeeCRUD.Data;
using EmployeeCRUD.Models;
using Microsoft.AspNetCore.Mvc;
namespace EmployeeCRUD.Controllers
{
public class EmployeeController : Controller
{
private readonly ApplicationDbContext _context;
public EmployeeController(ApplicationDbContext context)
{
_context = context;
}
public IActionResult Index()
{
IEnumerable objCatlist = _context.Employees;
return View(objCatlist);
}
public IActionResult Create()
{
return View();
}
[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult Create(Employee empobj)
{
if (ModelState.IsValid)
{
_context.Employees.Add(empobj);
_context.SaveChanges();
TempData["ResultOk"] = "Record Added Successfully !";
return RedirectToAction("Index");
}
return View(empobj);
}
public IActionResult Edit(int? id)
{
if (id == null || id == 0)
{
return NotFound();
}
var empfromdb = _context.Employees.Find(id);
if (empfromdb == null)
{
return NotFound();
}
return View(empfromdb);
}
[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult Edit(Employee empobj)
{
if (ModelState.IsValid)
{
_context.Employees.Update(empobj);
_context.SaveChanges();
TempData["ResultOk"] = "Data Updated Successfully !";
return RedirectToAction("Index");
}
return View(empobj);
}
public IActionResult Delete(int? id)
{
if (id == null || id == 0)
{
return NotFound();
}
var empfromdb = _context.Employees.Find(id);
if (empfromdb == null)
{
return NotFound();
}
return View(empfromdb);
}
[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult DeleteEmp(int? id)
{
var deleterecord = _context.Employees.Find(id);
if (deleterecord == null)
{
return NotFound();
}
_context.Employees.Remove(deleterecord);
_context.SaveChanges();
TempData["ResultOk"] = "Data Deleted Successfully !";
return RedirectToAction("Index");
}
}
}
步骤 - 14
添加视图文件在View文件夹下创建一个Employee文件夹,并创建如下文件
- 索引.cshtml
- 创建.cshtml
- 编辑.cshtml
- 删除.cshtml
Index.cshtml 代码
@model IEnumerable
@{
ViewData["Title"] = "Index";
}
@if (TempData["ResultOk"] != null)
{
@TempData["ResultOk"]
}
CRUD Operations Using .NET Core 6 & Microsoft.EntityFrameworkCore
Add Employee
Employee Name
Designation
Address
CreatedOn
@foreach (var item in Model)
{
@item.Name
@item.Designation
@item.Address
@item.RecordCreatedOn
Edit
Delete
}
Create.cshtml
@model Employee
Add Employee
@*//for front end validations*@
@section Scripts{
@{
@TempData["ResultOk"]
}
CRUD Operations Using .NET Core 6 & Microsoft.EntityFrameworkCore
Add Employee
| Employee Name | Designation | Address | CreatedOn | |
|---|---|---|---|---|
| @item.Name | @item.Designation | @item.Address | @item.RecordCreatedOn | Edit Delete |
@model Employee
Add Employee
Edit.cshtml
@model Employee
Edit Employee
@*//for front end validations*@
@section Scripts{
@{
Delete.cshtml
@model Employee
Delete Employee
@*//for front end validations*@
@section Scripts{
@{
步骤 - 15
最后运行应用程序并测试所有功能!
从这里下载源代码


