在使用EFCore连接SQLite之前我们先来了解一下SQLite
SQLite是一个轻量级、自包含、无服务器、零配置的事务性SQL数据库引擎,它支持SQL92标准的大多数查询语言并兼容ACID事务。具体如下:
新建一个.netCore的控制台项目
我们在项目的Nuget包管理器控制台中安装Microsoft.EntityFrameworkCore.Sqlite
NuGet\Install-Package Microsoft.EntityFrameworkCore.Sqlite -Version 8.0.2
打开我们的数据库可视化管理工具Navicat,新建连接,选择SQLite

连接名随便取一个,类型选SQLite3,数据库文件选择放在我们刚刚创建的控制台项目下

创建一个Users表,待会测试用

在项目中创建一个Users表的实体类和上下文类MyContext,如下图,刚刚创建的数据库文件与program类处于同一级

- public class users
- {
- public int Id { get; set; }
- public string Name { get; set; }
- }
数据库连接字符串:Data Source=data.db
定义一个名为 Users 的公共虚拟属性,它的类型是 DbSet。DbSet 是 EF Core 中的一个泛型类,表示数据库中的一个表。在这里,它表示 users 表。
virtual 关键字允许 EF Core 在内部使用延迟加载来加载相关数据。
- public class MyContext : DbContext
- {
- protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
- {
- optionsBuilder.UseSqlite("Data Source=data.db");
- }
-
- public virtual DbSet
Users { get; set; } = null!; - }
我们测试往数据库中添加一条数据,保存后再查询这条数据
- class Program
- {
- public static void Main(string[] args)
- {
- using (var db = new MyContext())
- {
- var user = new users() { Id = 1, Name = "张三" };
- db.Users.Add(user);
- db.SaveChanges();
-
- var users = db.Users.ToList();
- }
- }
- }
可以看到,在下面代码中的Users中,已经查出刚刚添加的数据了

刷新一下我们的Navicate,发现还是空的

这是因为此时我们是调试状态,因此此时修改的数据库文件是Debug目录下的这个,并且每次调试这里的data.db都会被我们的程序目录下的data.db给替换掉
