.NET应用程序版本并保留计算值

时间:2014-01-23 21:27:51

标签: .net database version

我一直想知道解决以下情况的最佳方法是什么:

该应用程序是版本1.0.0并包含一个执行计算的对象,让我们说'

TheResult = SomeInputValue * 2

(假设SomeInputValue = 100,所以TheResult = 200)

SomeInputValue存储在数据库中,但TheResult不存储。

然后,我们将应用程序更新到版本1.0.1,因为我们通知我们在TheResult的计算公式中有一个错误并将其更正为1.0.1版本:

TheResult = SomeInputValue ^ * 2.5

(TheResult = 250)

现在,当用户获得他的1.0.1版本时,他通知TheResult不再与之前相同。但在我们的情况下这是不可接受的。我们希望用户看到200,无论是否一次带有错误的计算。但我们也希望能够为用户提供选项以获得与1.0.1一致的计算值。

到目前为止,我还没有找到任何其他方法将TheResult保存到数据库并将版本号插入到同一行作为附加信息。然后,当使用1.0.1读取数据库项时,我们不计算它,而是显示数据库值200并通知用户该值来自数据库,如果使用新版本重新计算,它可能会有所不同。

这是使用早期应用程序版本维护计算值的方法(通过将版本号信息插入数据库)吗?

1 个答案:

答案 0 :(得分:0)

您可以做的最简单的事情是使用包含计算值输出的新列扩展表。由于在更改表后列值将立即为null,因此可以使用UPDATE语句使用版本1计算方法存储计算值。从那时起,在您的应用程序中,使用新的计算方法存储计算值。

UPDATE语句类似于:

UPDATE MyTable
SET NewStoredValueColumn = SomeInputValueColumn * 2;

这必须在升级期间完成。如果安装程序未自动运行SQL语句以对数据库进行更改,请将其添加到用户必须作为升级的一部分运行的文件中。

请勿 在第一次运行时尝试从应用程序升级数据库的快捷方式。如果您有多个用户同时运行应用程序的可能性很小,则可能会多次添加新的存储值列。