下面是一个使用 EF Core 在 ASP.NET Core MVC 中完成增删改查的示例:
-
创建一个新的 ASP.NET Core MVC 项目。
-
安装 EF Core 相关的 NuGet 包。在项目文件 (.csproj) 中添加以下依赖项:
xml
<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="5.0.10" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="5.0.10">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
</ItemGroup>
确保将 Version
指定为你当前使用的 EF Core 版本。
- 创建一个名为
TodoItem
的实体类,定义在你的应用程序中需要存储的数据。
csharp
public class TodoItem
{
public int Id { get; set; }
public string Title { get; set; }
public bool IsCompleted { get; set; }
}
- 创建一个继承自
DbContext
的类AppDbContext
,并在其中定义实体集。
csharp
public class AppDbContext : DbContext
{
public AppDbContext(DbContextOptions<AppDbContext> options)
: base(options)
{
}
public DbSet<TodoItem> TodoItems { get; set; }
}
- 在
Startup.cs
的ConfigureServices
方法中添加数据库上下文的配置。
csharp
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<AppDbContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
// ...
}
确保在 appsettings.json
文件中添加名为 DefaultConnection
的数据库连接字符串。
- 创建一个简单的控制器
TodoItemsController
,并添加以下操作方法。
csharp
public class TodoItemsController : Controller
{
private readonly AppDbContext _dbContext;
public TodoItemsController(AppDbContext dbContext)
{
_dbContext = dbContext;
}
public IActionResult Index()
{
var todoItems = _dbContext.TodoItems.ToList();
return View(todoItems);
}
public IActionResult Create()
{
return View();
}
[HttpPost]
public IActionResult Create(TodoItem todoItem)
{
if (ModelState.IsValid)
{
_dbContext.TodoItems.Add(todoItem);
_dbContext.SaveChanges();
return RedirectToAction(nameof(Index));
}
return View(todoItem);
}
public IActionResult Edit(int id)
{
var todoItem = _dbContext.TodoItems.Find(id);
if (todoItem == null)
{
return NotFound();
}
return View(todoItem);
}
[HttpPost]
public IActionResult Edit(int id, TodoItem todoItem)
{
if (id != todoItem.Id)
{
return NotFound();
}
if (ModelState.IsValid)
{
_dbContext.Update(todoItem);
_dbContext.SaveChanges();
return RedirectToAction(nameof(Index));
}
return View(todoItem);
}
public IActionResult Delete(int id)
{
var todoItem = _dbContext.TodoItems.Find(id);
if (todoItem == null)
{
return NotFound();
}
return View(todoItem);
}
[HttpPost, ActionName("Delete")]
public IActionResult DeleteConfirmed(int id)
{
var todoItem = _dbContext.TodoItems.Find(id);
if (todoItem == null)
{
return NotFound();
}
_dbContext.TodoItems.Remove(todoItem);
_dbContext.SaveChanges();
return RedirectToAction(nameof(Index));
}
}
-
创建对应的视图文件。在
Views/TodoItems
目录下创建Index.cshtml
、Create.cshtml
、Edit.cshtml
和Delete.cshtml
。 -
运行应用程序,并访问
https://localhost:{port}/TodoItems
,将能够执行增删改查操作。
这是一个简单的使用 EF Core 完成增删改查的示例,你可以根据实际需求进行适当的调整和扩展。