在C#项目里用EF Core连接SQLite,可以让我们以面向对象方式操作本地文件数据库,不必手写复杂SQL。下面从零开始演示一个控制台程序如何完成配置与基础增删改查。

一、创建项目与安装依赖
新建一个.NET控制台应用,然后通过NuGet安装以下两个包:
- Microsoft.EntityFrameworkCore.Sqlite
- Microsoft.EntityFrameworkCore.Tools
可以在包管理器控制台执行:
dotnet add package Microsoft.EntityFrameworkCore.Sqlite dotnet add package Microsoft.EntityFrameworkCore.Tools
二、定义实体与上下文
假设我们要保存一些书籍信息,先写实体类Book,再写继承DbContext的AppDbContext。
using System;
using Microsoft.EntityFrameworkCore;
// 书籍实体
public class Book
{
public int Id { get; set; }
public string Title { get; set; }
public string Author { get; set; }
public decimal Price { get; set; }
}
// 数据库上下文
public class AppDbContext : DbContext
{
public DbSet<Book> Books { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder options)
{
// 使用本地文件test.db作为SQLite数据库
options.UseSqlite("Data Source=test.db");
}
}三、创建数据库
在程序入口前,可调用EnsureCreated建库。下面演示主程序中的增删改查操作。
using System;
using System.Linq;
class Program
{
static void Main()
{
using var db = new AppDbContext();
// 如果库不存在则创建
db.Database.EnsureCreated();
// 增:添加一本新书
var book = new Book { Title = "C#入门", Author = "张三", Price = 39.9m };
db.Books.Add(book);
db.SaveChanges();
// 查:查询所有书
var allBooks = db.Books.ToList();
foreach (var b in allBooks)
{
Console.WriteLine($"Id={b.Id}, Title={b.Title}, Author={b.Author}");
}
// 改:把第一本书价格改为49.9
var first = db.Books.First();
first.Price = 49.9m;
db.SaveChanges();
// 删:删除这本书
db.Books.Remove(first);
db.SaveChanges();
}
}四、常见注意点
SQLite连接字符串里的Data Source指向本地文件,发布时记得带上该文件或配置路径。EF Core的SaveChanges()方法才会真正提交修改,只调用Add或Remove不会落库。若实体有外键关系,可用OnModelCreating方法配置,入门阶段先保持单表最简单。
小贴士:在开发阶段用EnsureCreated可以快速建表,生产环境建议用迁移命令来管理结构变更。
常用迁移命令
| 命令 | 作用 |
|---|---|
| Add-Migration Init | 生成初次迁移 |
| Update-Database | 将迁移应用到数据库 |
五、小结
通过以上步骤,我们完成了C#用EF Core连SQLite的入门流程:装包、写实体与上下文、EnsureCreated建库,再用LINQ做增删改查。你可以把这个模式套用到其他实体上,慢慢熟悉EF Core的跟踪机制与LINQ写法。