管理C#项目中的数据库更改

Jod*_*aki 4 c# sql-server tableadapter

我有一个C#app(在VisualStudio 2010中),它使用通过C#中的TableAdapters访问的SqlServer 2005.

我还没有找到一种管理数据库更改的好方法.例如,在我的下一个版本中,我有一堆数据库架构更改.我在Sql Server Management Studio中进行了所有数据库更改.但是现在我必须在部署新的应用程序代码(慢速和错误)后依次在生产服务器上手动进行这些更改.

此外,如果我决定将我的版本回滚到以前的版本,我必须手动完成并撤消所有我的数据库更改,然后才能部署旧代码(现在我受到时间限制,因为应用程序已关闭).同样,这也非常容易出错.

哦,让我们希望我的一个错误不会对生产数据库造成大规模破坏,否则我现在必须将最新的备份从存储中取出并重试(非常耗时).

我听说过Rails中的Migrations(以及像SubSonic这样的ORM).我认为新的ORM风格(用c#代码定义你的模式)有助于缓解很多这种情况,但遗憾的是,由于我使用的是TableAdapters,我看不出如何实现像迁移这样的东西.

人们如何处理这个问题?

kpr*_*bst 5

DB的发布管理通常涉及迁移静态数据和运行脚本以更新/创建可编程性元素(sprocs,UDF,触发器等)并修改现有的模式定义.在我看来你错过了脚本.如果您手动对开发数据库进行更改而不创建镜像这些更改的脚本,则需要针对您的测试/生产环境重复相同的手动步骤,正如您所说的那样容易出错且危险.

SQL Server Management Studio可以轻松保存反映任何数据库对象更改的脚本.在工具栏中应该有一个名为"生成更改脚本"的图标,该图标为您提供了将SQL文件保存到磁盘的选项.然后,您可以使用它来对另一台服务器执行相同的更改.您也可以手动编写任何或所有存储过程,UDF,触发器等脚本,并对服务器运行它们(只需右键单击它们).

至于回滚,通常通过在部署过程开始之前恢复数据库的备份来实现.

对于每个公司而言,整个过程往往是不同的,但这通常是如何完成的.

自动生成模式的ORM对我来说一直都是邪恶的,更不用说几乎不可能用于生产盒,但我想还有一个选择.