当前位置: 首页 > news >正文

net6.0 WebApi 中使用 Entity Framework Core + Sqlite

1.引入NuGet包:

2.创建上下文类和对应实体:

上下文类

public class SqlDbContext : DbContext
{/// <summary>/// /// </summary>/// <param name="options">数据库连接字符串</param>public SqlDbContext(DbContextOptions options): base(options){}#region 系统表public virtual DbSet<SysUser> SysUsers { get; set; }    //用户表public virtual DbSet<SysMenu> SysMenus { get; set; }    //菜单权限表public virtual DbSet<SysRole> SysRoles { get; set; }    //角色表public virtual DbSet<SysRoleMenu> SysRoleMenus { get; set; }    //角色菜单对应关系表#endregion#region 业务表public virtual DbSet<Picture> Pictures { get; set; }    //图片表public virtual DbSet<Classify> Classifys { get; set; }    //分类表public virtual DbSet<Article> Articles { get; set; }    //文章表#endregionprotected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder){//全局关闭EF Core数据跟踪optionsBuilder.UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking);base.OnConfiguring(optionsBuilder);}}

用户表

/// <summary>
/// 用户表
/// </summary>
[Table("Sys_User")]
public class SysUser : BaseEntity<long>
{/// <summary>/// 角色id/// </summary>[ForeignKey(nameof(SysRole))]   //"SysRole"public int RoleId { get; set; }public virtual SysRole? SysRole { get; set; }/// <summary>/// 用户密码/// </summary>[Required, StringLength(30)]public string UserPwd { get; set; } = null!;/// <summary>/// 用户名称/// </summary>[Required, StringLength(50)]public string Name { get; set; } = null!;/// <summary>/// 粉丝数量/// </summary>public int FansTotal { get; set; }/// <summary>/// 关注数量/// </summary>public int FocusTotal { get; set; }/// <summary>/// 用户头像/// </summary>[StringLength(200)]public string? Avatar { get; set; }/// <summary>/// 性别/// </summary>public int Sex { get; set; }/// <summary>/// 邮箱号/// </summary>[StringLength(20)]public string? Email { get; set; }/// <summary>/// QQ/// </summary>[StringLength(10)]public string? QQ { get; set; }/// <summary>/// 微信号/// </summary>[StringLength(20)]public string? WeChatNumber { get; set; }/// <summary>/// 自我介绍/// </summary>[StringLength(300)]public string? About { get; set; }}

这里仅展示了一个表。其余类似。

3.WebApi项目的入口类Program.cs中注册:

builder.Services.AddDbContext<SqlDbContext>(options =>
{var path = "D:\\开源\\xiao-yu-ji-study-api-master\\xiao-yu-ji-study-api-master\\DataBase\\api.db";//options.UseSqlServer(configuration.GetConnectionString("strConn"));options.UseSqlite($"Data Source={path}");
});

4.执行数据库迁移指令:

1.Add-Migration InitialCreate 

 //Add-migration作用:根据实体类及配置生成操作数据库的迁移代码

2.Update-Database

//Update-Database作用 创建数据库的相关代码才会被执行,数据表才会生成

注意:

没有数据库也会自己新建数据库,但是第三步代码中:

var path = "D:\\开源\\xiao-yu-ji-study-api-master\\xiao-yu-ji-study-api-master\\DataBase\\api.db";

一定要指定路径和数据库名称。

注意项目别选错了。

执行成功后,使用可视化软件查看相关数据库:

已经有对应表存在。

题外话

1.根据B站up主开源项目修改,原本使用的SqlSever数据库,因为不想下载SqlSever修改成Sqlite;

开源链接:https://gitee.com/hovernn/xiao-yu-ji-study-api

2.相关引用:

https://blog.csdn.net/lihuxie/article/details/132677571?fromshare=blogdetail&sharetype=blogdetail&sharerId=132677571&sharerefer=PC&sharesource=qq_59062726&sharefrom=from_link

http://www.dtcms.com/a/410053.html

相关文章:

  • 前端2.0
  • PostIn入门到实战(4) - 如何使用接口Mock尽早满足前端开发需求
  • 【论文阅读 | TGRS 2025 | DHANet:用于多模态无人机目标检测的双流分层交互网络​​】
  • 零知IDE——STM32F407VET6与ADS1115模数转换器实现多通道数据采集显示系统
  • 门户网站 商城系统青岛建站开发
  • 从零学算法39
  • BIKE算法:后量子密码标准化竞赛中的编解码候选者
  • 【字节跳动】LLM大模型算法面试题:什么是 LangChain?LangChain 包含哪些 核心概念?
  • 降低fullgc停顿时间
  • BatchNorm2d详细原理介绍
  • Spring Boot WebSocket:使用 Java 构建多频道聊天系统
  • 中堂镇仿做网站软文网站有哪些
  • Android 应用配置跳转微信小程序
  • Word和WPS文字中的自动编号和文字间距过大怎么办?
  • 京东零售张泽华:从营销意图到购买转化,AI重塑广告增长
  • Casey‘s EDI 需求分析
  • 网站美工和平面设计师手机网站域名开头
  • 从垂直钻到水平钻:如何用陀螺精准掌控钻井轨迹?
  • yield在Python中的应用
  • Linux配置Java/JDK(解决Kali启动ysoserial.jar JRMPListener报错)暨 Kali安装JAVA8和切换JDK版本的详细过程
  • springboot用jar启动能访问,但是打成war,部署到tomcat却访问不到
  • 免费企业网站建设流程华为公司电子商务网站建设策划书
  • 中国网站备案查询系统东莞seo外包公司哪家好
  • STM32H743-ARM例程6-RS422
  • 倾角传感器厂家为物联网应用提供高效双轴监测解决方案
  • 住宅IP vs 数据中心IP 2025实战性能对决:IPIPGO、天启HTTP、光络云深度横评
  • 成都网站seo公司wordpress页面视频播放
  • EasyClick JavaScript正则表达式匹配规则
  • 盟接之桥说制造:“首件手板”商业模式:制造业的下一个黄金赛道,你的公司准备好了吗?
  • mysql怎么安装,新手安装MySQL后如何安全备份不踩坑?