如何在ASP.NET Core中高效地使用数据库?

ASP.NET Core 数据库操作详解

如何在ASP.NET Core中高效地使用数据库?

一、项目创建与配置

1. 创建ASP.NET Core Web API项目

步骤:打开Visual Studio 2022,选择“创建一个新项目”,在项目模板中选择“ASP.NET Core Web API”,点击“下一步”,为项目命名(例如EFCoreDemo),选择保存位置,然后点击“创建”,在“附加信息”对话框中,确保目标框架为.NET 6.0或更高版本,然后点击“创建”。

目的:设置一个新的ASP.NET Core Web API项目,为后续的数据库操作做准备。

2. 添加Entity Framework Core依赖项

步骤:在项目创建完成后,右键点击项目名称,选择“管理NuGet程序包”,在“浏览”选项卡中搜索Microsoft.EntityFrameworkCore.SqlServer并点击“安装”,继续搜索并安装Microsoft.EntityFrameworkCore.Tools,这些包将帮助我们与SQL Server数据库交互并进行数据库迁移操作。

目的:通过安装必要的NuGet包来引入Entity Framework Core的功能,使其能够进行数据库操作和迁移。

二、创建数据库上下文和模型

创建模型类

步骤:在EF Core中,模型类用于映射数据库表,假设我们需要管理一本简单的图书馆数据库,首先我们创建一个Book类,右键项目,在“添加”菜单中选择“新建文件夹”,命名为Models,在Models文件夹下,右键选择“添加类”,命名为Book.cs,并定义如下内容:

namespace EFCoreDemo.Models
{
    public class Book
    {
        public int Id { get; set; }
        public string Title { get; set; }
        public string Author { get; set; }
        public DateTime PublishedDate { get; set; }
        public decimal Price { get; set; }
    }
}

目的:定义一个模型类,该类的属性将对应数据库中的表字段。

创建数据库上下文类

步骤:我们需要创建一个数据库上下文类LibraryContext,它将管理数据库连接并映射模型类到数据库表,在项目根目录中创建一个新的文件夹命名为Data,右键点击Data文件夹,添加一个类命名为LibraryContext.cs,并定义如下内容:

using EFCoreDemo.Models;
using Microsoft.EntityFrameworkCore;
namespace EFCoreDemo.Data
{
    public class LibraryContext : DbContext
    {
        public LibraryContext(DbContextOptions<LibraryContext> options) : base(options)
        {
        }
        public DbSet<Book> Books { get; set; }
    }
}

目的:创建一个继承自DbContext的数据库上下文类,用于管理数据库连接和模型映射。

配置数据库连接字符串

步骤:在appsettings.json文件中配置数据库连接字符串,确保你的SQL Server实例可以访问。

{
  "ConnectionStrings": {
    "DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=LibraryDb;Trusted_Connection=True;MultipleActiveResultSets=true"
  },
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "AllowedHosts": "*"
}
```然后在Program.cs中配置服务:

using EFCoreDemo.Data;

using Microsoft.EntityFrameworkCore;

var builder = WebApplication.CreateBuilder(args);

// 添加数据库上下文到服务容器

builder.Services.AddDbContext<LibraryContext>(options =>

options.UseSqlServer(builder.Configuration.GetConnectionString("DefaultConnection")));

builder.Services.AddControllers();

var app = builder.Build();

app.MapControllers();

app.Run();

目的:配置数据库连接字符串并将其添加到服务容器中,使得应用程序能够连接到指定的数据库。
三、执行数据库迁移
为了在数据库中创建相应的表结构,我们需要执行数据库迁移操作:步骤:打开Visual Studio 2022中的“包管理器控制台”(工具 > NuGet 包管理器 > 包管理器控制台),输入以下命令来创建迁移并更新数据库:

Add-Migration InitialCreate

Update-Database

目的:通过迁移命令生成初始数据库结构,并将其应用到数据库中。
四、实现CRUD操作
为了实现基本的CRUD操作,我们需要创建一个API控制器:步骤:右键点击Controllers文件夹,选择“添加 > 控制器”,选择“API控制器 使用Entity Framework”,并点击“添加”,在对话框中,选择Book模型类和LibraryContext数据上下文类,然后点击“添加”,Visual Studio会自动生成一个名为BooksController的控制器,其中包含了基本的CRUD操作代码。目的:生成一个控制器,以便实现对书籍数据的增删改查操作。
五、实现获取所有书籍的操作
在生成的BooksController中,GetBooks方法如下所示:

[HttpGet]

如何在ASP.NET Core中高效地使用数据库?

public async Task<ActionResult<IEnumerable<Book>>> GetBooks()

return await _context.Books.ToListAsync();

目的:实现一个简单的GET请求,以获取所有书籍记录。
六、实现获取单本书籍的操作
在BooksController中,GetBook方法如下所示:

[HttpGet("{id}")]

public async Task<ActionResult<Book>> GetBook(int id)

var book = await _context.Books.FindAsync(id);

if (book == null)

{

return NotFound();

}

return book;

目的:根据ID获取单本书籍的详细信息,如果找不到对应的书籍,则返回404 Not Found响应。
七、实现添加书籍的操作
在BooksController中,PostBook方法如下所示:

[HttpPost]

public async Task<ActionResult<Book>> PostBook(Book book)

_context.Books.Add(book);

await _context.SaveChangesAsync();

return CreatedAtAction("GetBook", new { id = book.Id }, book);

目的:添加一本新书到数据库中,并返回创建的书籍信息和201 Created状态码。
八、实现更新书籍的操作
在BooksController中,PutBook方法如下所示:

[HttpPut("{id}")]

public async Task<IActionResult> PutBook(int id, Book book)

if (id != book.Id)

{

return BadRequest();

}

_context.Entry(book).State = EntityState.Modified;

try

{

await _context.SaveChangesAsync();

}

如何在ASP.NET Core中高效地使用数据库?

catch (DbUpdateConcurrencyException)

{

if (!_context.Books.Any(e => e.Id == id))

{

return NotFound();

}

else

{

throw;

}

}

return NoContent();

目的:更新现有书籍的信息,如果书籍不存在,则返回404 Not Found响应;如果并发冲突,则处理相应异常。
九、实现删除书籍的操作
在BooksController中,DeleteBook方法如下所示:

[HttpDelete("{id}")]

public async Task<IActionResult> DeleteBook(int id)

var book = await _context.Books.FindAsync(id);

if (book == null)

{

return NotFound();

}

_context.Books.Remove(book);

await _context.SaveChangesAsync();

return NoContent();

目的:根据ID删除一本书籍,如果书籍不存在,则返回404 Not Found响应。
十、归纳与扩展功能说明
本文介绍了如何使用Entity Framework Core(EF Core)在ASP.NET Core项目中进行基本的数据库操作,包括项目创建与配置、模型和数据库上下文的创建、数据库迁移以及CRUD操作的实现,EF Core作为一个轻量级、跨平台且高性能的ORM框架,极大地简化了数据库操作的过程,EF Core还提供了丰富的扩展机制,允许开发者自定义行为,如数据提供程序的创建等,在实际开发中,可以根据需求进一步探索EF Core的高级特性和最佳实践。

以上就是关于“asp.net core 数据库”的问题,朋友们可以点击主页了解更多内容,希望可以够帮助大家!