.Net core 使用百小僧通过EF 写一个增删改查的案例
时间: 2024-03-22 22:41:52 浏览: 92
好的,下面是一个简单的使用 .Net Core 和 Entity Framework (EF) 的增删改查案例:
首先,创建一个 ASP.NET Core Web 应用程序。在 Visual Studio 中,选择“创建新项目”,然后选择“ASP.NET Core Web 应用程序”。
接下来,选择一个模板,例如“Web 应用程序 (Model-View-Controller)”模板,然后点击“创建”。
在应用程序中,我们需要安装 Entity Framework Core。在“解决方案资源管理器”中右键单击项目,然后选择“管理 NuGet 包”选项。在“NuGet 包管理器”中搜索“Microsoft.EntityFrameworkCore”,然后安装它。
创建一个名为“AppDbContext.cs”的新类,用于定义数据库上下文。在该类中,我们需要指定要使用的数据库提供程序,以及要使用的数据库连接字符串。
```csharp
using Microsoft.EntityFrameworkCore;
namespace YourAppName.Models
{
public class AppDbContext : DbContext
{
public AppDbContext(DbContextOptions<AppDbContext> options) : base(options)
{
}
public DbSet<User> Users { get; set; }
}
}
```
接下来,创建一个名为“User.cs”的新类,用于定义用户模型。
```csharp
namespace YourAppName.Models
{
public class User
{
public int Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
}
}
```
现在,我们可以创建控制器和视图来执行 CRUD 操作。
在“控制器”文件夹中,创建一个名为“UserController.cs”的新控制器。在控制器中,我们需要注入“AppDbContext”依赖项,并定义以下动作:
- Index:显示所有用户。
- Details:显示单个用户的详细信息。
- Create:显示创建用户的表单。
- Edit:显示编辑用户的表单。
- Delete:显示删除用户的确认页面。
- CreatePost:处理创建用户的 POST 请求。
- EditPost:处理编辑用户的 POST 请求。
- DeletePost:处理删除用户的 POST 请求。
```csharp
using System.Linq;
using Microsoft.AspNetCore.Mvc;
using YourAppName.Models;
namespace YourAppName.Controllers
{
public class UserController : Controller
{
private readonly AppDbContext _dbContext;
public UserController(AppDbContext dbContext)
{
_dbContext = dbContext;
}
public IActionResult Index()
{
var users = _dbContext.Users.ToList();
return View(users);
}
public IActionResult Details(int id)
{
var user = _dbContext.Users.FirstOrDefault(u => u.Id == id);
return View(user);
}
public IActionResult Create()
{
return View();
}
[HttpPost]
public IActionResult CreatePost(User user)
{
_dbContext.Users.Add(user);
_dbContext.SaveChanges();
return RedirectToAction("Index");
}
public IActionResult Edit(int id)
{
var user = _dbContext.Users.FirstOrDefault(u => u.Id == id);
return View(user);
}
[HttpPost]
public IActionResult EditPost(User user)
{
var existingUser = _dbContext.Users.FirstOrDefault(u => u.Id == user.Id);
if (existingUser != null)
{
existingUser.Name = user.Name;
existingUser.Age = user.Age;
_dbContext.SaveChanges();
}
return RedirectToAction("Index");
}
public IActionResult Delete(int id)
{
var user = _dbContext.Users.FirstOrDefault(u => u.Id == id);
return View(user);
}
[HttpPost]
public IActionResult DeletePost(int id)
{
var user = _dbContext.Users.FirstOrDefault(u => u.Id == id);
if (user != null)
{
_dbContext.Users.Remove(user);
_dbContext.SaveChanges();
}
return RedirectToAction("Index");
}
}
}
```
在“视图”文件夹中,创建一个名为“Index.cshtml”的新视图,用于显示所有用户。在视图中,我们需要遍历所有用户,并为每个用户显示详细信息、编辑和删除链接。
```html
@model IEnumerable<User>
<table>
<thead>
<tr>
<th>ID</th>
<th>Name</th>
<th>Age</th>
<th></th>
</tr>
</thead>
<tbody>
@foreach (var user in Model)
{
<tr>
<td>@user.Id</td>
<td>@user.Name</td>
<td>@user.Age</td>
<td>
<a href="@Url.Action("Details", new { id = user.Id })">Details</a> |
<a href="@Url.Action("Edit", new { id = user.Id })">Edit</a> |
<a href="@Url.Action("Delete", new { id = user.Id })">Delete</a>
</td>
</tr>
}
</tbody>
</table>
<a href="@Url.Action("Create")">Create new user</a>
```
创建一个名为“Details.cshtml”的新视图,用于显示单个用户的详细信息。
```html
@model User
<div>
<h1>@Model.Name</h1>
<p>Age: @Model.Age</p>
</div>
<a href="@Url.Action("Index")">Back to list</a>
```
创建一个名为“Create.cshtml”的新视图,用于显示创建用户的表单。
```html
@model User
<form asp-action="CreatePost">
<div>
<label>Name:</label>
<input asp-for="Name" />
</div>
<div>
<label>Age:</label>
<input asp-for="Age" />
</div>
<button type="submit">Create</button>
</form>
<a href="@Url.Action("Index")">Back to list</a>
```
创建一个名为“Edit.cshtml”的新视图,用于显示编辑用户的表单。
```html
@model User
<form asp-action="EditPost">
<div>
<label>ID:</label>
<input asp-for="Id" readonly />
</div>
<div>
<label>Name:</label>
<input asp-for="Name" />
</div>
<div>
<label>Age:</label>
<input asp-for="Age" />
</div>
<button type="submit">Save</button>
</form>
<a href="@Url.Action("Index")">Back to list</a>
```
创建一个名为“Delete.cshtml”的新视图,用于显示删除用户的确认页面。
```html
@model User
<div>
<h1>Are you sure you want to delete this user?</h1>
<p>@Model.Name (age @Model.Age)</p>
</div>
<form asp-action="DeletePost" method="post">
<input type="hidden" name="id" value="@Model.Id" />
<button type="submit">Delete</button>
</form>
<a href="@Url.Action("Index")">Cancel</a>
```
现在,我们已经完成了一个简单的使用 .Net Core 和 Entity Framework 的增删改查案例。
阅读全文