我正在使用FM来部署数据库。作为该部署的一部分,我正在推出一个视图。变化如下:
R1:创建视图
R2:无法更改视图
R3:在视图中添加一列
R4:没有变化
R5:从视图中删除列
视图由源代码管理中的脚本创建。让我们说我部署R3然后决定我应该回滚到R2(我想的是一个我不想留在奇怪状态的生产网站)。因此视图的脚本(drop / create)位于本地文件中。我不能再使用该脚本,因为本地版本在R3但我希望它返回R1(或R2)。
如何使用FluentMigrator 可靠地将视图回滚到以前的版本?我能想到的唯一选择是将视图创建脚本保存在我的Migration类的字符串中。但似乎我需要在课堂上将它的每个版本都放在一个字符串中 - 非常笨拙并且很难卖给团队。
我能想到的每一个现实解决方案都与源控制的想法背道而驰 - 在本地拥有单一版本的东西并跟踪其随时间的变化。
答案 0 :(得分:1)
我将此功能添加到FluentMigrator中 - 能够直接从源执行脚本。你可以在这里得到它:
https://github.com/jcollum/fluentmigrator
目前仅支持SVN。还没有融入主要分支。
答案 1 :(得分:0)
一种非常简单的方法是执行以下操作:
if (object_id('dbo.myView', 'V')) is not null
drop view [dbo].[myView]
go
create view [dbo].[myView] as
select foo, bar
from dbo.Orders
现在,如果您需要更改该视图,则可以对此脚本进行更改并进行部署。它会删除视图,如果它存在并创建它新鲜。从源代码管理的角度来看,您所做的只是对文本文件进行更改,以便您能够有效地存储它,非常简单地查看差异等。换句话说,您可以执行所有源代码控制的事情确实很好,因为它只是文本。