使用ClickOnce部署更新本地SQL Server数据库

4
我正在开发一个应用程序,它将使用一些设置和本地的SQL Server。我的问题是,在更新应用程序时,设置或数据会被覆盖吗?
如果我将来想要改变一些表格会发生什么?
2个回答

3
坦白说,我一直认为 ClickOnce 处理数据的方式很危险。如果你使用 ClickOnce 部署数据库,它会将其放在 DataDirectory 中。然后当你部署应用程序的更新时,它会将数据库复制到下一个版本的应用程序安装文件夹中。但是如果数据库发生了变化,它会将其复制到文件夹 + \pre,并在 datadirectory 中放置一个新的数据库。如果你没有意识到这个变化,它仍然会替换掉原来的数据库。如果你只是打开 SQLCE 数据库并查看数据结构,它就被部署了。惊喜!
我认为将数据存储在用户配置文件夹下的另一个文件夹中更有意义,也更安全。这样,你可以选择何时更新你的数据库。
此外,当你确实想要对数据库进行更改时,你可以使用 SQL 语句来进行操作,例如“ALTER TABLE”等。我创建了一个脚本,并将其部署为一个长字符串(其中包含回车符),然后让应用程序按回车符拆分资源,并逐个执行语句。你大概明白我的意思。

关于用户设置的一点注释--您可以通过UI编程方式更改这些设置(即为用户提供此功能)。但请注意,如果您更改了应用程序的证书并且正在运行足够高版本的.NET(3.5、4),它本身不会引起问题,但作为ClickOnce应用程序具有不同的标识,并且在下次更新发布时不会传递用户设置。因此,出于这个原因,我还为配置数据编写了自己的XML文件,并将其存储在LocalApplicationData中。


0

ClickOnce更新期间不会覆盖用户级别设置,但您可以推送新的应用程序级别设置,因为[YourExeName].exe.config文件在更新期间将被覆盖。

如果需要覆盖用户级别设置,则必须以编程方式执行此操作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接