You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在不依赖Entity Framework的情况下使用System.Data.SQLite.Linq查询SQLite数据库

不依赖Entity Framework,用System.Data.SQLite.Linq查询SQLite数据库

核心思路:绕开EF,直接用Linq to SQLite的原生实现

你观察得很准——System.Data.SQLite.Linq确实和带EF6后缀的版本共享大部分核心代码,只是后者绑定了EF依赖。要纯用它的话,关键是直接使用它提供的SQLiteConnection和对应的Linq查询支持,完全不需要引入EF相关的上下文或类。

具体步骤和代码示例

1. 安装正确的NuGet包

确保只安装System.Data.SQLite.Linq(不要装带EF6后缀的那个),这样就不会引入Entity Framework依赖。

2. 构建数据模型类

不需要EF的DbContext或Entity特性,只需要简单的POCO类,属性名对应数据库表的列名就行:

public class User
{
    public int Id { get; set; }
    public string Username { get; set; }
    public string Email { get; set; }
}

3. 使用SQLiteConnection和Linq查询

这里的关键是用SQLiteConnection的CreateQuery<T>方法,或者直接对Table<T>进行Linq操作——这部分就是System.Data.SQLite.Linq提供的原生Linq支持,完全不依赖EF:

using System.Data.SQLite;
using System.Linq;

// 初始化连接
var connectionString = "Data Source=your_database.db;Version=3;";
using (var conn = new SQLiteConnection(connectionString))
{
    conn.Open();

    // 示例1:查询所有用户
    var allUsers = conn.Table<User>().ToList();

    // 示例2:条件查询(Linq过滤)
    var filteredUsers = conn.Table<User>()
                            .Where(u => u.Username.StartsWith("J"))
                            .OrderBy(u => u.Id)
                            .ToList();

    // 示例3:执行自定义SQL并映射到模型
    var query = conn.CreateQuery<User>("SELECT * FROM User WHERE Email LIKE @email", 
                                        new SQLiteParameter("@email", "%example.com"));
    var usersWithExampleEmail = query.ToList();
}

为什么这能行?

你反编译看到的一致性是对的——System.Data.SQLite.Linq本身就内置了Linq to SQLite的解析逻辑,它会把Linq表达式转换成对应的SQLite原生SQL,然后通过SQLiteConnection执行,完全不需要EF的上下文或中间层。官方文档里提到的“支持Linq的包”,本质就是指这类实现了Linq查询提供者的组件,System.Data.SQLite.Linq就是其中之一,和EF是独立的。

注意事项

  • 确保你的POCO类属性和数据库表列名完全匹配(大小写在SQLite里通常不敏感,但最好保持一致)
  • 如果需要执行更复杂的Linq操作,比如分组、连接,System.Data.SQLite.Linq基本都支持,它会自动转换为对应的SQLite语法
  • 不要引用任何Entity Framework相关的命名空间(比如System.Data.Entity),避免意外引入依赖

内容的提问来源于stack exchange,提问作者Johnny Qian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:13:19