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

1.引入NuGet包:

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

上下文类

cs 复制代码
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; }    //文章表



    #endregion

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
       
        //全局关闭EF Core数据跟踪
        optionsBuilder.UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking);

        base.OnConfiguring(optionsBuilder);
    }

}

用户表

cs 复制代码
/// <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中注册:

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

相关推荐
兵慌码乱8 天前
面向桌面端的资产管理系统分层架构设计与核心模块实现
python·系统架构·sqlite·pyqt5·数据库设计·桌面应用开发·mvc架构
兵慌码乱9 天前
基于Python+PyQt5+SQLite的药房管理系统实现:事务一致性与界面解耦全流程解析
python·sqlite·信号与槽·pyqt5·数据库设计·桌面应用开发·事务处理
伶俜6615 天前
鸿蒙原生应用实战(十八)ArkUI 记账本:SQLite 账单 + 图表统计 + 分类管理
jvm·sqlite·harmonyos
伶俜6615 天前
鸿蒙原生应用实战(二十)ArkUI 课程表 App:Grid 网格 + SQLite 存储 + 周次切换 + 上课提醒
华为·sqlite·harmonyos
Lanceli_van16 天前
SQLite 3.45.2(sqlite-autoconf-3450200)ARM 交叉编译完整步骤
arm开发·sqlite
王小王-12316 天前
基于电脑硬件市场数据分析与可视化系统
数据库·数据分析·django·sqlite·电脑·电脑硬件数据·电脑硬件市场分析
winfredzhang16 天前
给本地图库的“人“加上属性:DeepFace + MediaPipe Pose 联合分析(含 GitHub 镜像踩坑)
python·sqlite·mediapipe·打标签·场景和属性
zh_xuan17 天前
PC端操作SQLite数据库
数据库·c++·sqlite
winfredzhang17 天前
用 wxPython + 通义千问 VL 打造一款“批量人物图像识别“桌面应用
python·sqlite·wxpython·qwen 3.7max·分析照片
爱和冰阔落17 天前
【MCP实战】从0写一个本地工具服务器:文件搜索、SQLite查询与安全边界
服务器·安全·sqlite