File tree 2 files changed +25
-0
lines changed
2 files changed +25
-0
lines changed Original file line number Diff line number Diff line change @@ -33,6 +33,12 @@ public void Execute(string task)
33
33
_steps = 1 ;
34
34
_migrationVersionRunner . Rollback ( _steps ) ;
35
35
break ;
36
+ case "rollback:toversion" :
37
+ _migrationVersionRunner . RollbackToVersion ( _version ) ;
38
+ break ;
39
+ case "rollback:all" :
40
+ _migrationVersionRunner . RollbackToVersion ( 0 ) ;
41
+ break ;
36
42
case "migrate:down" :
37
43
_migrationVersionRunner . MigrateDown ( _version ) ;
38
44
break ;
Original file line number Diff line number Diff line change @@ -17,6 +17,7 @@ public interface IMigrationVersionRunner
17
17
void MigrateUp ( ) ;
18
18
void MigrateUp ( long version ) ;
19
19
void Rollback ( int steps ) ;
20
+ void RollbackToVersion ( long version ) ;
20
21
void MigrateDown ( long version ) ;
21
22
void RemoveVersionTable ( ) ;
22
23
}
@@ -171,8 +172,26 @@ public void Rollback(int steps)
171
172
_versionInfo = null ;
172
173
}
173
174
175
+ public void RollbackToVersion ( long version )
176
+ {
177
+ // Get the migrations between current and the to version
178
+ foreach ( var migrationNumber in VersionInfo . AppliedMigrations ( ) )
179
+ {
180
+ if ( version < migrationNumber || version == 0 )
181
+ {
182
+ migrateDown ( migrationNumber ) ;
183
+ }
184
+ }
185
+
186
+ if ( version == 0 )
187
+ RemoveVersionTable ( ) ;
188
+
189
+ _versionInfo = null ;
190
+ }
191
+
174
192
public void MigrateDown ( long version )
175
193
{
194
+
176
195
migrateDown ( version ) ;
177
196
_versionInfo = null ;
178
197
}
You can’t perform that action at this time.
0 commit comments