确保两台计算机运行相同版本的应用程序

本文关键字:版本 应用程序 运行 计算机 两台 确保 | 更新日期: 2023-09-27 18:29:23

这是我的情况。我有一个与sql server交互的桌面应用程序。将有一个sql服务器,多个应用程序将访问同一数据库。目前,两台计算机正在运行相同的应用程序。

如果我更改了数据库模式,我还必须更改应用程序,现在问题就出现了。

更改前:带列的发票表-title varchar(128)

更改后:带列的发票表-title varchar(128)-内容varchar(128)

计算机A使用没有任何关于新列"内容"的信息的旧应用程序,而计算机B使用新应用程序。

因为A正在使用旧的应用程序,它将向表中插入null值,而B将面临null指针异常。

我想不出其他方式了,因为旧的应用程序不能在交易过程中终止并下载最新版本。我认为告诉人们不要在停机时间内使用该应用程序,然后重新启动该应用程序不是一个好主意。

网站是如何处理的?我认为所有的网站都会面临这个问题。

防止这种情况发生的正确方法是什么?请给我指正确的方向

确保两台计算机运行相同版本的应用程序

有一些选项可以做到这一点。例如:

使用ClickOnce部署,可以在Application Updates对话框中指定应用程序所需的最低版本。您还可以在应用程序运行时使用代码以编程方式对其进行检查。

此外,如果您不使用ClickOnce,您可以将软件的最低要求版本保留在数据库中,并在应用程序启动时检查数据库中的版本,如果当前版本低于最低要求版本,则不要运行应用程序。如果需要,还可以在应用程序运行时以编程方式对其进行检查。

var version = Assembly.GetExecutingAssembly().GetName().Version;

您可以查询数据库中的记录,该记录告诉您兼容的应用程序的最低版本是什么。

一个快速而肮脏的解决方案是为insert编写一个触发器,该触发器将向新列("content")写入默认值。或者(更容易)为您的列使用默认值。