Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on May 9th, 2012  |  syntax: None  |  size: 1.97 KB  |  hits: 17  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. using System;
  2. using System.Configuration;
  3. using System.Data.Common;
  4.  
  5. public static class Migrate
  6. {
  7.     public static void Start()
  8.     {
  9.  
  10.         try
  11.         {
  12.             EnsureInit();
  13.             ExecuteMigration("StoreCategory_SearchOptimization",
  14. @"ALTER TABLE  dbo.[Category]
  15. ADD SearchOptimisationPageTitle nvarchar(max) NULL,
  16. SearchOptimisationPageKeywords nvarchar(max) NULL,
  17. SearchOptimisationPageDescription nvarchar(max) NULL");
  18.         }
  19.         catch (Exception ex)
  20.         {
  21.             Trace.TraceLogFactory.Create().Error("Error during app migration. " + ex.Message, ex);                  
  22.         }
  23.     }
  24.  
  25.     private static void ExecuteMigration(string migrationId, string migration)
  26.     {
  27.         ExecuteScript(@"IF NOT EXISTS (SELECT * FROM [dbo].[__Migrations] WHERE MigrationID = '" + migrationId + @"')
  28. BEGIN
  29.  
  30. " + migration + @"
  31.                
  32. INSERT INTO [dbo].[__Migrations] ([MigrationId] ,[LastExecuted]) VALUES ('" + migrationId + @"', GETDATE())
  33. END
  34. ");
  35.     }
  36.        
  37.        
  38.     private static void EnsureInit()
  39.     {
  40.         ExecuteScript(@"IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[__Migrations]') AND type in (N'U'))
  41. CREATE TABLE [dbo].[__Migrations](
  42.         [MigrationID] [nvarchar](450) NOT NULL PRIMARY KEY,
  43.         [LastExecuted] [datetime2](7) NOT NULL )");
  44.     }
  45.  
  46.     private static void ExecuteScript(string sql)
  47.     {
  48.         using(var con = CreateOpenConnection())
  49.         {
  50.             var cmd = con.CreateCommand();
  51.             cmd.CommandText = sql;
  52.             cmd.ExecuteNonQuery();
  53.                
  54.         }
  55.     }
  56.  
  57.     private static DbConnection CreateOpenConnection()
  58.     {
  59.         var connectionConfig = ConfigurationManager.ConnectionStrings["JA.Catalogue.Properties.Settings.CatalogueConnectionString"];
  60.  
  61.         var factory = DbProviderFactories.GetFactory("System.Data.SqlClient");
  62.  
  63.         var con = factory.CreateConnection();
  64.         con.ConnectionString = connectionConfig.ConnectionString;
  65.         con.Open();
  66.  
  67.         return con;
  68.     }
  69. }