有没有类似于ActiveRecord::Migration的.NET框架?

4

我玩过ruby on rails的ActiveRecord::Migration类,我喜欢它如何轻松地将数据库模式保持版本化。我想在我的ASP.NET项目中做类似的事情,我想知道是否有任何工具可以像ActiveRecord::Migration一样为.NET完成这项工作。

我不认为需要在C#或ruby代码中定义我的SQL脚本,我只想编写SQL。但是是否有一个工具来管理SQL脚本并跟踪您需要运行哪些脚本以保持同步?

4个回答

3

migratordotnet是一个数据库版本控制系统,类似于Ruby on Rail的迁移。其目的是自动化数据库更改,并帮助在各个环境中保持这些更改的同步。


谢谢!这正是我要找的!但还有一件事,如果我想编写特定于SQL Server 2008的SQL,例如覆盖索引或XML列之类的东西,我该怎么办?是否有一种方法可以将任意SQL作为“Up”或“Down”的一部分? - kelloti
1
从http://code.google.com/p/migratordotnet/wiki/WritingMigrations来看,似乎您可以使用ExecuteNonQuery方法来执行任意的SQL。 - David Atkinson
@David - 谢谢。但是我以为你是Red Gate的代表。难道你不应该说服我使用SQL Compare吗 :p - kelloti
确实如此,但它们并不完全相同。SQL Compare将生成迁移脚本SQL,而不是管理特定模式版本之间的脚本。然而,这是即将推出的功能,请拭目以待! - David Atkinson

3

这似乎是对ActiveRecord::Migration的有趣变化。我一定会好好看看这个。 - kelloti

1

在Visual Studio中,数据库项目具有您所需的功能。 您可以执行模式比较以跟踪模式版本之间的差异。 它们还可以处理部署,尽管您的部署需求可能会有所不同。

MSDN上的数据库项目

还有其他第三方工具可供使用,例如Redgate的SQL Compare。

Redgate的SQL Compare

补充:

不幸的是,这些都没有内在的git支持。 但是,如果您不介意自己完成大部分工作,则不会阻止您填补这一差距。

使用Visual Studio,您可以使用MSBuild自动运行与编译操作相关联的脚本/可执行文件。 然后,您可以附加自己与git的交互。

MSDN上的MSBuild参考

如果你正在寻找一种工具,可以自动从git部署模式更改,我目前不知道有任何存在的工具;但是你可以使用SMO来自己编写。它具有您需要的所有功能,以便能够编写SQL Server对象脚本并执行针对SQL Server的脚本。您可能需要为表更改编写自己的增量脚本(出于安全考虑),但是您可以为许多其他非数据对象(存储过程、用户函数等)执行删除/替换操作。

MSDN上的SQL Server管理对象


1

Red Gate正在考虑一项迁移功能,该功能将与SQL Source Control和SQL Compare集成。如果您对此感兴趣,请考虑填写我们的研究调查并告诉我们您的要求。填写调查还将使您有资格加入我们的早期访问计划。

http://www.surveymk.com/s/migrations


这听起来像是宣传...非常有用的宣传 :) 谢谢! - kelloti

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接