ASP.NET Core 是一个开源的 Web 框架,它允许开发者轻松地构建现代、高性能的 Web 应用程序。Entity Framework Core (EFCore) 是一个轻量级、可扩展的 ORM(对象关系映射)框架,它支持多种数据库。SQLite 是一个轻量级的嵌入式数据库,适用于小型应用程序。在本篇文章中,我们将学习如何在 ASP.NET Core 项目中结合 EFCore 和 SQLite。
1. 创建一个新的 ASP.NET Core Web API 项目
首先,我们需要创建一个新的 ASP.NET Core Web API 项目。在 Visual Studio 中,选择 "创建新项目",然后选择 "ASP.NET Core Web 应用程序"。在 "选择模板" 对话框中,选择 ".NET Core" 和 "API" 模板。为项目命名并单击 "创建"。
2. 安装 EFCore 和 SQLite 相关包
在项目中,我们需要安装 EFCore 和 SQLite 相关的 NuGet 包。右键单击项目名称,选择 "管理 NuGet 程序包",然后搜索并安装以下包:
- Microsoft.EntityFrameworkCore
- Microsoft.EntityFrameworkCore.Sqlite
- Microsoft.EntityFrameworkCore.Tools
3. 创建实体类和数据库上下文
接下来,我们需要创建一个实体类和一个继承自 DbContext
的数据库上下文类。
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public decimal Price { get; set; }
}
public class AppDbContext : DbContext
{
public DbSet<Product> Products { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlite("Filename=./products.db");
}
}
在上面的代码中,我们创建了一个 Product
实体类和一个 AppDbContext
数据库上下文类。DbSet<Product>
表示 Product
实体将在数据库中映射为一个表。OnConfiguring
方法用于配置数据库连接字符串。
4. 迁移数据库
在 EFCore 中,我们可以使用迁移来创建和更新数据库结构。首先,我们需要创建一个迁移。在 Visual Studio 的 "包管理器控制台" 中,输入以下命令:
Add-Migration InitialCreate
这将创建一个名为 "InitialCreate" 的迁移。接下来,我们需要应用这个迁移来创建数据库:
Update-Database
现在,数据库和 Products
表已经创建好了。
5. 实现 CRUD 操作
最后,我们将在控制器中实现基本的 CRUD 操作。
using Microsoft.AspNetCore.Mvc;
using System.Linq;
namespace YourProjectName.Controllers
{
[ApiController]
[Route("[controller]")]
public class ProductsController : ControllerBase
{
private readonly AppDbContext _context;
public ProductsController(AppDbContext context)
{
_context = context;
}
[HttpGet]
public IActionResult GetProducts()
{
return _context.Products.ToList();
}
[HttpGet("{id}")]
public IActionResult GetProduct(int id)
{
var product = _context.Products.Find(id);
if (product == null)
{
return NotFound();
}
return product;
}
[HttpPost]
public IActionResult CreateProduct([FromBody] Product product)
{
_context.Products.Add(product);
_context.SaveChanges();
return CreatedAtAction(nameof(GetProduct), new { id = product.Id }, product);
}
[HttpPut("{id}")]
public IActionResult UpdateProduct(int id, [FromBody] Product productDetails)
{
var product = _context.Products.Find(id);
if (product == null)
{
return NotFound();
.