我部署了一個C#應用程序,並且我的客戶受益於ClickOnce更新的新部署版本。自動更新SQL Server數據庫模式
但是我更改爲應用程序數據庫模式時遇到問題,因爲客戶無法從自動更新數據庫更改中受益,請給我解決方案如何讓客戶應用程序檢查新版本的數據庫是否可用,然後執行更新。
所以這裏有兩個問題:
- 怎麼做了DB模式新版本的客戶應用程序檢查?
- 如何執行更新,避免丟失客戶數據只是更新架構?
我部署了一個C#應用程序,並且我的客戶受益於ClickOnce更新的新部署版本。自動更新SQL Server數據庫模式
但是我更改爲應用程序數據庫模式時遇到問題,因爲客戶無法從自動更新數據庫更改中受益,請給我解決方案如何讓客戶應用程序檢查新版本的數據庫是否可用,然後執行更新。
所以這裏有兩個問題:
我假設每個用戶都有自己的數據庫。在這種情況下,你可以做到以下幾點:
使用實體框架啓用「自動遷移」:http://msdn.microsoft.com/en-us/data/jj554735.aspx。只要檢測到模型更改,EF就會自動更新數據庫。
寫遷移手動和使用ClickOnce IsFirstRun功能,在第一時間檢測時,在執行應用程序的新版本 - 然後你可以寫這樣的事情:
public void MigrateData() { if (ApplicationDeployment.IsNetworkDeployed) { if (ApplicationDeployment.CurrentDeployment.IsFirstRun) { try { NS.Logic.DAL.EventDataAccessor.Create().MigrateFromPreviousVersion(); NS.Logic.DAL.UserDataAccessor.Create().MigrateFromPreviousVersion(); // and do the same for all affected accessors } catch (Exception ex) { MessageBox.Show("Could not migrate data from previous version. Please contact the developer.", "My app", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } }
和那麼對於MigrateFromPreviousVersion()中的每個訪問器,您可以編寫自己的SQL代碼來更新此特定版本的應用程序的數據庫。
存儲過程,視圖,觸發器呢? –
是否有可能通過C#中的MainDATASET.xsd更新sql db? –
您需要創建執行遷移的SQL代碼(即「CREATE PROCEDURE ...」等),並在MigrateFromPreviousVersion()調用中執行它。如果您使用ADO.Net - 這篇文章可能會幫助您:http://stackoverflow.com/a/1190832/1246870 – avs099
您使用什麼技術訪問數據庫?您計劃應用哪些模式更改?你使用什麼數據庫? – Dennis
這是sql數據庫(sql server 2008 r2)。 我的意思是改變字段名稱或添加新表格,存儲過程... –
@Dennis任何解決方案plz –