DC娱乐网

sqlite-net:推荐一个.NET版本简单、强大、跨平台的 SQL...

我是编程乐趣,一个10年.Net开发经验老程序员,点击右上方“关注”,每天为你分享开源项目和编程知识。私信回复:888,
我是编程乐趣,一个10年.Net开发经验老程序员,点击右上方“关注”,每天为你分享开源项目和编程知识。私信回复:888,领取.Net学习资料! 对于Sqlite很多人不了解,其实SQLite 是全球最流行、部署量最大的数据库引擎,其普及程度远超大多数人的认知。 而且SQLite 是轻量级、无服务器、零配置的嵌入式关系型数据库引擎。 开发桌面软件、App应用,基本都会使用到。 下面推荐一个Sqlite ORM开源库,方便我们开发。 01 项目简介 sqlite-net 是一个轻量级、简单且功能强大的跨平台 SQLite 客户端和 ORM(对象关系映射)库,专为 .NET 平台设计。 是一个快速便捷的数据库层,它的设计遵循以下目标: 非常容易与现有项目集成,并且可以在所有 .NET 平台上运行。这是一个对 SQLite 的轻量级封装,速度快、效率高。非常简单的方法,可以安全地执行 CRUD 操作和查询(使用参数),并以强类型的方式检索这些查询的结果。它能与您的数据模型兼容,无需您修改类。02 跨平台支持 .NET Framework / .NET Core / .NET 5+Xamarin.iOS / Xamarin.AndroidMAUIUWPUnityAzure Functions 等支持所有主流 .NET 平台。03 核心功能 1、轻量 ORM 通过简单的特性(Attributes)定义表结构,例如 public Stock { [PrimaryKey, AutoIncrement] public int Id { get; set; } public string Symbol { get; set; } [Ignore] // 不映射到数据库 public string IgnoreField { get; set; } }支持主键、自增、索引([Indexed])、忽略字段等。2、同步 & 异步 API 同步 API:适用于控制台应用、后台服务等。 var db = new SQLiteConnection(dbPath); db.CreateTable(); db.Insert(new Stock { Symbol = "AAPL" });异步 API:基于 Task,适合移动或 UI 应用,避免阻塞主线程。 var db = new SQLiteAsyncConnection(dbPath); await db.CreateTableAsync(); await db.InsertAsync(stock);3、SQL语句灵活查询 db.Execute ("create table Stock(Symbol varchar(100) not null)"); db.Execute ("insert into Stock(Symbol) values (?)", "MSFT"); var stocks = db.Query ("select * from Stock");4、支持 SQLCipher(加密数据库) 简单加密: var options = new SQLiteConnectionString(databasePath, true, key: "password"); var encryptedDb = new SQLiteAsyncConnection(options);特定安全参数 var options2 = new SQLiteConnectionString( databasePath, // 数据库文件路径(例如:"/data/encrypted.db") true, // 是否将 DateTime 类型存储为整数(ticks)而非文本;true 表示使用 ticks key: "password", // SQLCipher 加密密钥 —— 所有数据将使用此密码进行 AES-256 加密/解密 // ⚠️ 实际项目中应避免硬编码密码,建议从安全渠道动态获取 // 在设置加密密钥 *之前* 执行的自定义操作(用于配置 SQLCipher 兼容性或安全策略) preKeyAction: db => db.Execute("PRAGMA cipher_default_use_hmac = OFF;"), // 上述 PRAGMA 禁用 HMAC(消息认证码)校验。 // 通常仅用于兼容旧版 SQLCipher(v3 或更早)创建的数据库。 // ⚠️ 关闭 HMAC 会降低安全性(无法检测数据篡改),新项目应保持默认开启(ON)。 // 在设置加密密钥 *之后* 执行的自定义操作 postKeyAction: db => db.Execute("PRAGMA kdf_iter = 128000;") // 设置密钥派生函数(KDF)的迭代次数为 128,000。 // 迭代次数越高,暴力破解难度越大,但数据库打开速度略慢。 // SQLCipher v4+ 默认值为 256,000;此处设为 128,000 可能出于性能或兼容性考虑。 );04 项目地址 https://github.com/praeclarum/sqlite-net - End -