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.相关引用: