Windows系统桌面单机版软件该用啥数据库?别再让用户装 SQL Server 了,劝退一半客户
|
admin
2026年8月21日 16:47
本文热度 28
|
先讲个真事:我第一个库存软件,用 SQL Server。交付时客户问"啥是 SQL Server?怎么装?"——我写了 3 页安装说明,他还是装不上。最后这个项目,黄了。 一半客户,是被"先装个数据库"劝退的。结论先给:Windows系统桌面单机版软件,首选 SQLite(配合 EF Core)。零安装、一个文件、随软件走。SQLite 是文件型数据库:一个 .db 文件就是整个库,软件带走它就能跑,客户啥都不用装。// ✅ Infrastructure/AppDbContext.cspublic class AppDbContext : DbContext{ public DbSet<Product> Products => Set<Product>();
// 数据库连接串:指向一个文件,不用起服务 protected override void OnConfiguring(DbContextOptionsBuilder b) => b.UseSqlite($"Data Source={DbPath}");
// 数据库文件路径:放在用户可写目录 private static string DbPath => Path.Combine( Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "InventoryApp", "inventory.db"); // 例:C:\Users\你\AppData\Local\InventoryApp\inventory.db}
UseSqlite(...) —— 用 SQLite 提供器,换数据库只改这一行- 文件放
LocalApplicationData —— 用户有权限写,重装软件也不丢
💡 第 8 篇说的"换数据库零改动界面",底层就靠这里:哪天要从 SQLite 换别的,只改 OnConfiguring 和依赖注入,上层毫无感知。dotnet ef migrations add Init # 生成迁移dotnet ef database update # 落到 .db 文件
上线时,软件首次启动检测库文件不存在就自动 Database.EnsureCreated()(或跑迁移),客户无感。⚠️ 避坑:别让客户手动建库/跑脚本。SQLite 文件随软件分发,首次启动自迁移,才是桌面端正确姿势。📉 当初想:SQL Server 专业,客户公司应该有,用它能显得高级。
💥 后来:小客户根本没有 SQL Server,安装说明劝退一半人;连上的那几个还常遇"服务没启动"。✅ 最终:全面切 SQLite + EF Core。交付变成一个文件夹,双击即用,再没人问"怎么装数据库"。
阅读原文:https://mp.weixin.qq.com/s/wMQEIjYmG7IaoHTp5xXGQQ
该文章在 2026/8/22 17:15:12 编辑过