c# - 如何更改已部署应用程序中的数据库设计?

标签 c# sql-server database deployment

情况

我正在创建一个 C#/WPF 4 应用程序,使用 SQL Compact Edition 数据库作为 Entity Framework 的后端,并使用 ClickOnce 进行部署。

我对使用数据库的应用程序相当陌生,但我不怀疑我在设计和构建原始数据库时会遇到很多问题。但是,我担心将来我需要添加或更改一些功能,这将需要我在数据库已经部署并且用户在数据库中有数据后更改数据库设计。

问题

  1. 是否有可能像代码更改一样通过 clickonce 更新将更新后的数据库设计推送给用户?

  2. 如果我这样做了,用户的数据会受到怎样的影响?

  3. 这种事情在实际情况中是如何完成的?有哪些最佳实践?

我认为在最坏的情况下,我需要在数据库或程序设置中构建某种“版本”编号,并创建一些例程将用户当前版本的数据库迁移到新版本。

我很感激任何对我的问题的洞察。非常感谢。

最佳答案

在设计数据库时会使用一些“技巧”以允许设计更改。

首先,许多数据库设计人员创建 View 来进行编码,而不是直接对表进行编码。这允许更改表(拆分或合并等),而只需要更新 View 。您可能需要调查 database refactoring技术。

其次,您确实可以将版本控制信息添加到数据库中(通常作为具有单个字段的“版本”表来完成)。可以通过代码或脚本更新数据库。我工作的一个系统会自动检查数据库版本,然后通过代码中的版本逐步更新架构,直到它与运行时所需的版本相匹配。这是一项艰巨的任务。

关于c# - 如何更改已部署应用程序中的数据库设计?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3830482/

相关文章:

c# - 如何从 WebRequest 恢复和创建文件并将其写入数据库(C#)?

c# - AAD Graph API 权限问题

c# - 如何在内部访问修饰符上实现Setter依赖注入(inject)

c# - 在 global.asax 中启用 web api 属性路由

c# - Xunit 2.3.0 无法将日期作为内联参数传递

sql - 优化sql查询帮助

sql-server - 在包含更新语句和 CTE 的存储过程中使用 Begin tran

SQL - 在不存在的地方插入

php - CakePHP 3 - 将实体字段 FLOAT 保存为 INTEGER

database - AppStore 更新后 Cordova 应用程序的 localStorage 被删除