我正在构建一个使用某些设置和本地SQL Server的应用程序。我的问题是,何时需要更新应用程序?设置或数据会被覆盖吗?
如果我以后想更改一些表会怎样?
最佳答案
坦白地说,我一直认为ClickOnce处理数据的方式很危险。如果使用ClickOnce部署数据库,则会将其放入DataDirectory中。然后,当您将更新部署到应用程序时,它将数据库向前复制到安装该应用程序下一版本的文件夹中。但是,如果数据库发生更改,它会将其向前复制到文件夹+ \ pre,然后在数据目录中放置一个新的文件夹。如果您没有意识到自己进行了更改,则无论如何都会替换它。如果您想打开一个SQLCE数据库并检查数据结构,那么将部署它。惊喜!
我认为将数据存储在用户个人资料下的另一个文件夹中更有意义,而且更安全。然后,您可以选择何时更新数据库。 This article将显示如何移动您的数据,以确保它不受ClickOnce更新的影响。
另外,当您确实要对数据库进行更改时,可以使用SQL语句来执行更改,例如“ ALTER TABLE”等。我创建了一个脚本并将其部署为一个长字符串(其中包含回车符),并让应用程序通过回车符将资源分开,并逐个执行语句。您有大致的想法。
关于用户设置的一条评论-您可以通过用户界面以编程方式更改这些设置(即为用户提供功能)。但是请注意,如果您更改了应用程序的证书并运行了足够高的.NET版本(3.5、4),它本身不会造成问题,但它与ClickOnce应用程序的身份不同,并且在发布下一个更新时不保留用户设置。因此,我还为配置数据滚动了自己的XML文件,并将其存储在LocalApplicationData中。