2014-01-23 67 views
0

我一直想知道什麼是解決以下問題的最佳途徑:.NET應用程序版本和維護計算值

該應用程序是1.0.0版本,幷包含了執行計算的對象,讓我們說

TheResult = SomeInputValue * 2 

(讓我們假設SomeInputValue = 100,所以TheResult = 200)

SomeInputValue被存儲在數據庫中,但TheResult不是。

然後,我們更新應用到版本1.0.1,因爲我們通知我們在計算公式forTheResult有一個錯誤,其校正成將版本1.0.1:

TheResult = SomeInputValue^* 2.5 

(TheResult = 250 )

現在,當用戶獲得他的1.0.1版本時,他通知TheResult不再與以前相同。但在我們的情況下這是不可接受的。我們希望用戶能夠看到200個,不管這個時候是否有一個錯誤計算。但是我們也希望能夠給用戶提供選項以獲得與1.0.1一致的計算值。

到目前爲止,我還沒有找到任何其他方式來將TheResult保存到數據庫,並將版本號插入到同一行作爲附加信息。然後,當用1.0.1讀取數據庫項目時,我們不計算它,而是顯示數據庫值200,並通知用戶此值來自數據庫,如果使用新版本進行重新計算,則可能會有所不同。

這樣保持早期應用程序版本(通過向數據庫插入版本號信息)的計算值?

+0

如果你創造的是令人滿意的,那就是這樣。 –

回答

0

您可以做的最簡單的事情是使用包含計算值輸出的新列來擴展表格。由於在更改表後列值將立即爲空,因此可以使用版本1計算方法應用UPDATE語句來存儲計算值。從此,在您的應用程序中,使用新的計算方法存儲計算的值。

UPDATE語句會是這樣的:

UPDATE MyTable 
SET NewStoredValueColumn = SomeInputValueColumn * 2; 

這將在升級過程中完成。如果安裝程序沒有自動運行SQL語句來更改數據庫,請將其添加到用戶必須作爲升級的一部分運行的文件中。

切勿採取的試圖將數據庫從你第一次運行應用程序升級的快捷方式。如果您有多個用戶同時運行應用程序的可能性很小,那麼您可能會多次添加新的存儲值列。