ASP.NET Core 入门教程三 结合 EFCore 和 SQLite

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 的数据库上下文类。

复制代码
cs 复制代码
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 操作。

复制代码
cs 复制代码
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();
.
相关推荐
uzong3 小时前
技术故障复盘模版
后端
GetcharZp4 小时前
基于 Dify + 通义千问的多模态大模型 搭建发票识别 Agent
后端·llm·agent
桦说编程4 小时前
Java 中如何创建不可变类型
java·后端·函数式编程
IT毕设实战小研4 小时前
基于Spring Boot 4s店车辆管理系统 租车管理系统 停车位管理系统 智慧车辆管理系统
java·开发语言·spring boot·后端·spring·毕业设计·课程设计
wyiyiyi5 小时前
【Web后端】Django、flask及其场景——以构建系统原型为例
前端·数据库·后端·python·django·flask
阿华的代码王国6 小时前
【Android】RecyclerView复用CheckBox的异常状态
android·xml·java·前端·后端
Jimmy6 小时前
AI 代理是什么,其有助于我们实现更智能编程
前端·后端·ai编程
AntBlack6 小时前
不当韭菜V1.1 :增强能力 ,辅助构建自己的交易规则
后端·python·pyqt
bobz9657 小时前
pip install 已经不再安全
后端
寻月隐君7 小时前
硬核实战:从零到一,用 Rust 和 Axum 构建高性能聊天服务后端
后端·rust·github