首页 > 数据库 >ASP.NET Core 入门教程三 结合 EFCore 和 SQLite

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

时间:2024-08-28 19:58:58浏览次数:15  
标签:Core product ASP 数据库 SQLite context NET public

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();
.

标签:Core,product,ASP,数据库,SQLite,context,NET,public
From: https://blog.csdn.net/masonwu21/article/details/141612972

相关文章

  • NETCORE下用SKIT类库发送微信模板消息
    NETCORE下用SKIT类库发送微信模板消息 //测试发送模板消息-微信公众号//https://developers.weixin.qq.com/doc/offiaccount/Message_Management/Template_Message_Interface.html#5publicasyncTask<IActionResult>Ceshi(intid,stringopenid)......
  • sqlite3使用记录
    参考资源SQLite简介|菜鸟教程(runoob.com)Ubuntu下sqlite3的安装及使用安装步骤安装:sudoapt-getinstallsqlite3查看版本:sqlite-version安装Sqlite3编译需要的工具包:sudoapt-getinstalllibsqlite3-dev语法说明注意(1)sqlite语法忽略大小写的区别,除了GLOB等......
  • @aspectJ机制剖析
    @aspectJ机制剖析@aspectj通过修改字节码文件来实现目标方法的增强。org.springframework.beans.factory.config.BeanPostProcessor#postProcessAfterInitializationorg.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator#postProcessAfterInitializationA......
  • 【音视频通话】使用asp.net core 8+vue3 实现高效音视频通话
    引言在三年前,写智能小车的时候,当时小车上有一个摄像头需要采集,实现推拉流的操作,技术选型当时第一版用的是nginx的rtmp的推拉流,服务器的配置环境是centos,2H4G3M的一个配置,nginx的rtmp的延迟是20秒,超慢,后来研究了SRS以及ZLMediaKit这两个开源的推拉流服务器,没记错的话,两个......
  • Asp.Net Core中Typed HttpClient高级用法
    另一个常见的需求是根据不同的服务接口创建不同的HttpClient实例。为了实现这一点,ASP.NETCore提供了TypedHttpClient的支持。下面是使用TypedHttpClient的示例代码:publicinterfaceIExampleService{Task<string>GetData();}publicclassExampleService:IExampl......
  • 界面控件Telerik UI for ASP.NET Core 2024 Q2亮点 - AI与UI的融合
    TelerikUIforASP.NETCore是用于跨平台响应式Web和云开发的最完整的UI工具集,拥有超过60个由KendoUI支持的ASP.NET核心组件。它的响应式和自适应的HTML5网格,提供从过滤、排序数据到分页和分层数据分组等100多项高级功能。本文将介绍界面组件TelerikUIforASP.NETCore在今年......
  • .net core使用jwt自动续期
    .netcore使用jwt自动续期       小弟不C才,最近看了下网上的jwt方案,于是自己写了一个简单的jwt方案和大家分享下,希望大家给点意见!      假如有一个读书网站,可以不用登陆就访问,当需要自己写文章的时候就必须登录,并且登录之后如果一段时间内没有访问,则......
  • .net core下使用事件总线
    .netcore下使用事件总线        随着微服务的火热,DDD(领域驱动设计模式)思想风起云涌,冲击着整个软件生态系统。其中,事件总线那是必须知道的了,于是我便抱着一个学习DDD的心态搭建了一个博客网站,目前该网站正在建设阶段,后续会不断完善,这里我只是讲一下我里面所用到的......
  • 一起来学习.net core程序使用中介者模式:MediatR插件
    一起来学习.netcore程序使用中介者模式:MediatR插件     中介者模式是一种常见的设计模式,旨再降低程序的耦合性,因为传统的三层模式层层之间需要显示的调用,必须上层依赖下层,耦合性很高,为了解耦,将所有的指令单独放在一个位置处理,其他位置均通过这个位置来间接的调用,从......
  • 驾驭ASP.NET MVC:C# Web开发的精粹
    标题:驾驭ASP.NETMVC:C#Web开发的精粹摘要ASP.NETMVC是微软提供的一个用于构建动态网站的服务器端框架,它遵循模型-视图-控制器(MVC)设计模式,以实现代码的高内聚低耦合。本文将深入探讨如何在C#中使用ASP.NETMVC框架进行Web应用程序开发,包括项目结构、路由、控制器、视图和......