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

Ben*_*gan 14 c# database sql-server deployment

情况

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

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

问题

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

  2. 如果我这样做,用户的数据将如何受到影响?

  3. 这种事情在实际情况下是如何完成的?什么是最佳实践?

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

我很欣赏任何有关我的问题的见解.非常感谢.

Dr *_*bie 14

在设计数据库以允许设计更改时,会使用一些"技巧".

首先,许多数据库设计者创建视图来代码,而不是直接编写表.这允许更改表(拆分或合并等),同时只需要更新视图.您可能希望为此调查数据库重构技术.

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