我有一個項目,我一直在用C#處理本地數據庫,我想發佈。
問題是,每當我發佈一個新版本的操作系統時,數據庫都會被忽略,並且我丟失了所有的數據。 我如何設置項目以便本地數據庫不會被覆蓋?visual studio單擊發布覆蓋LocalDatabase
0
A
回答
1
0
據我瞭解您的本地數據庫是納入您的部署包中的文件。在此基礎上:
正確的方法
因版本,你可能需要更改數據庫結構或新的功能擴展。所以,我建議從部署包中排除本地數據庫文件。 而是複製數據庫文件使用腳本創建數據庫:
- 準備用於創建數據庫(你可能已經擁有它們,因爲你必須準備好數據庫)的SQL腳本。這樣的腳本應該創建數據庫,如果它不存在,更改存儲過程,如果需要更新表格等。
- 如果您有一些默認數據,它應該與數據庫一起使用 - 您可以簡單地將它們與腳本一起插入。如果您的初始數據庫很大,並且您不想編寫插入腳本 - 將初始數據庫包含到名稱與活動數據庫不同的部署包中(例如database.initial.ext),並將其手動重命名爲活動數據庫(例如database.ext)在應用程序啓動時(如果此基礎不存在)。
- 在應用程序啓動時運行所有創建/更新數據庫的腳本。
- 繼續執行您的應用程序。
至於導致你應該有這樣的事情(樣品):
public static void Main(object[] args)
{
CreateDatabaseIfNotExists();
RunDatabaseUpdateQueries();
InsertInitialDataIfDatabaseNew();
// Rest of your code...
}
優點:您將獲得靈活的解決方案,當你提供新的版本可能會改變你的數據庫。 缺點:您必須編寫更新腳本並在應用程序啓動時運行它們。
解決方法
作爲替代擬議流,你可以簡單地做下一個:
- 包括數據庫文件到您的部署包用不同的名稱(例如database.initial.ext)。
- 在應用程序啓動時重命名數據庫文件以更正其中一個(例如database.ext),如果它不存在。
至於導致你應該有這樣的事情(樣品):
public static void Main(object[] args)
{
CreateDatabaseIfNotExists();
// Rest of your code...
}
優點:你需要免得努力實現這樣的流動。
缺點:的解決方案是不靈活,你將面臨的問題的情況下,如果數據庫結構應該在未來的版本更新。
相關問題
- 1. ASP.NET 5 DNU發佈覆蓋
- 2. 用Visual Studio發佈
- 3. 如何覆蓋Visual Studio代碼覆蓋範圍內的異常
- 4. 如何從命令行使用Visual Studio 2010 RC'單擊'發佈'?
- 5. Visual Studio編輯器分類器覆蓋
- 6. 奇怪的圖標覆蓋的Visual Studio
- 7. 代碼覆蓋率Visual Studio 2010
- 8. 谷歌測試覆蓋Visual Studio 2012
- 9. 覆蓋Visual Studio 2008 MSBuild版本
- 10. 覆蓋Visual Studio 2010的UI行爲
- 11. 在visual studio 2010中覆蓋文字
- 12. Visual Studio 2012代碼覆蓋率
- 13. 覆蓋webBrowser單擊事件
- 14. 覆蓋畫布覆蓋在畫布上
- 15. 發佈請求單擊按鈕android studio
- 16. Visual Studio 2012菜單'分析代碼覆蓋率'丟失
- 17. 如何覆蓋Visual Studio的菜單加速器快捷方式?
- 18. Visual Studio發佈管理buclket
- 19. 從Visual Studio Express發佈
- 20. 從Visual Studio 2015發佈
- 21. Visual Studio - 發佈文件夾
- 22. Visual Studio 2012部分發布
- 23. 發佈Visual Studio與MSBuild
- 24. Visual Studio發佈失敗
- 25. 錯誤的Visual Studio發佈
- 26. Visual Studio發佈事件
- 27. Visual Studio發佈版本
- 28. visual studio 2012發佈問題
- 29. Bower with Visual Studio發佈
- 30. Visual Studio發佈MSdeploy $(SolutionDir)