-
Notifications
You must be signed in to change notification settings - Fork 1
/
SqlDatabaseMigrator.cs
82 lines (73 loc) · 3.19 KB
/
SqlDatabaseMigrator.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
// --------------------------------------------------------------------------------------------------------------------
// <copyright file="SqlDatabaseMigrator.cs" company="Copyright ©2014 John Allberg & Jonas Fredriksson">
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
// </copyright>
// <summary>
// Class for migrating to latest version of the database.
// </summary>
// --------------------------------------------------------------------------------------------------------------------
namespace WinShooter.Web.DatabaseMigrations
{
using System.Reflection;
using FluentMigrator;
using FluentMigrator.Runner;
using FluentMigrator.Runner.Announcers;
using FluentMigrator.Runner.Initialization;
using WinShooter_Web.DatabaseMigrations;
/// <summary>
/// Class for migrating to latest version of the database.
/// </summary>
public class SqlDatabaseMigrator : ISqlDatabaseMigrator
{
/// <summary>
/// Migrate to latest version.
/// </summary>
/// <param name="connectionString">
/// The connection string.
/// </param>
public void MigrateToLatest(string connectionString)
{
var announcer = new TextWriterAnnouncer(s => System.Diagnostics.Debug.WriteLine(s));
var assembly = Assembly.GetExecutingAssembly();
var migrationContext = new RunnerContext(announcer)
{
Target = assembly.FullName
};
var options = new MigrationOptions { PreviewOnly = false, Timeout = 60 };
var factory = new FluentMigrator.Runner.Processors.SqlServer.SqlServer2012ProcessorFactory();
var processor = factory.Create(connectionString, announcer, options);
var runner = new MigrationRunner(assembly, migrationContext, processor);
runner.MigrateUp(true);
}
/// <summary>
/// The migration options.
/// </summary>
private class MigrationOptions : IMigrationProcessorOptions
{
/// <summary>
/// Gets or sets a value indicating whether the migration is preview only.
/// </summary>
public bool PreviewOnly { get; set; }
/// <summary>
/// Gets or sets the timeout value.
/// </summary>
public int Timeout { get; set; }
/// <summary>
/// Gets the provider switches.
/// </summary>
public string ProviderSwitches { get; private set; }
}
}
}