c# - 在客户端维护数据库
问题描述
客户端:我有一个桌面应用程序。该应用程序还有一个 Sqlite 文件。我在客户端机器上使用 WIX 工具集安装了它。当我在应用程序中输入一些数据时,它会保存在数据库文件中。
服务器端:我对我的应用程序进行了一些更改,例如在数据库文件中的表中添加一个额外的列。
我进一步从服务器端安装了新版本的应用程序。
问题:一旦我从客户端打开我的 sqlite 文件,我以前的所有数据都会丢失。我得到的只是一张空白桌子。
问题:安装升级版应用程序后,是否可以保留数据库中存储的先前数据以及新的更改?
解决方案
这是 MSI 的一个常见问题,它通常使用 XML 文件来表达自己,但它是同一回事。
MSI 可以覆盖或不覆盖文件,无论哪种方式都是错误的。您希望架构更改,但您不想丢失用户数据,并且对于 MSI,该文件是原子的。
最好的办法是使用 MSI 安装的文件作为种子/模型,在应用程序运行时将其克隆到另一个目录并将用户数据存储在那里。在随后的登录中,检查种子数据库的架构更改并以此为基础以编程方式迁移克隆的数据库。
推荐阅读
- ajax - 如何使用 System.Net.WebClient() API 或 Ajax API 从不完整的论坛页面获取剩余文本?
- php - WooCommerce how to display "you save X%" on checkout page
- r - 按列中的唯一值拆分数据框并在全局环境中创建对象
- python-3.5 - 我收到类似 NameError 的错误:未定义名称“df_clean”
- javascript - JavaScript querySelectorAll() 仍然会发现已删除的 DOM 元素
- javascript - Node.js 中 .txt 文件中的随机行
- reactjs - 如何将应用程序状态从 React Context 迁移到 Redux Tool Kit?
- javascript - 如何从重定向链接自动播放 youtube 视频
- python - 无法在 Python 中解析 html
- latex - 如何以最新版本实时安装 TeX?