我有一个项目,我一直在用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. 覆盖webBrowser单击事件
- 6. 谷歌测试覆盖Visual Studio 2012
- 7. 代码覆盖率Visual Studio 2010
- 8. 在visual studio 2010中覆盖文字
- 9. 覆盖Visual Studio 2010的UI行为
- 10. 覆盖画布覆盖在画布上
- 11. 发布请求单击按钮android studio
- 12. 如何覆盖Visual Studio的菜单加速器快捷方式?
- 13. Visual Studio发布管理buclket
- 14. 从Visual Studio Express发布
- 15. 发布Visual Studio与MSBuild
- 16. Visual Studio发布失败
- 17. 发布/从Visual Studio 2010
- 18. Visual Studio发布版本
- 19. Visual Studio发布事件
- 20. Visual Studio发布MSdeploy $(SolutionDir)
- 21. Visual Studio 2017 15.4 - Ctrl +单击
- 22. 覆盖一个画布覆盖div
- 23. 完全覆盖Maven的发布周期
- 24. TFS Visual Studio测试任务“没有发现结果发布。”当设置“覆盖TestRun参数”
- 25. jquery - 单击覆盖时关闭边栏
- 26. 覆盖SharePoint:SaveButton单击事件共享点
- 27. Magento布局覆盖!
- 28. 覆盖CSS布局
- 29. SWT覆盖布局
- 30. Visual Studio无法在点击一次发布期间包含DLL