/// <summary>
 /// Execute the sql command by slitting file by lines that contain 'GO'
 /// </summary>
 /// <param name="profile"></param>
 /// <param name="transaction"></param>
 public void ExecuteSql(DatabaseVersionSetup.Profile profile, ITransaction transaction)
 {
     var stringBuilder = new StringBuilder();
     foreach (var file in _files){
         using (var stream = File.OpenRead(profile.VariableReplace(file)))
         {
             using (var streamReader = new StreamReader(stream)){
                 while (!streamReader.EndOfStream){
                     var readLine = streamReader.ReadLine();
                     if (readLine.Trim().Equals("GO")){
                         Execute(profile, stringBuilder, transaction);
                         stringBuilder = new StringBuilder();
                     }
                     else{
                         stringBuilder.AppendLine(readLine);
                     }
                 }
                 //make sure we execute everything
                 Execute(profile, stringBuilder, transaction);
             }
         }
     }
 }
 public void ExecuteSql(DatabaseVersionSetup.Profile profile, ITransaction transaction)
 {
     IConnection connection = profile.RepositoryProfile.GetDatabase();
     connection.ExecuteSql(profile.VariableReplace(_sql), transaction);
 }
 /// <summary>
 /// Will initialize on initial setup
 /// </summary>
 /// <param name="profile"></param>
 /// <param name="transaction"></param>
 public void InitializeNewTracker(DatabaseVersionSetup.Profile profile, ITransaction transaction)
 {
     string replace = profile.VariableReplace(profile.RepositoryProfile is SqlServerDatabaseProfile? SqlServerCreateTracker : MysqSqlCreateTracker);
     replace = replace.Replace(TablePlaceHolder, TableName);
     profile.RepositoryProfile.GetDatabase().ExecuteSql(replace, transaction);
 }
 private void Execute(DatabaseVersionSetup.Profile profile, StringBuilder stringBuilder, ITransaction transaction)
 {
     var trim = stringBuilder.ToString().Trim();
     if (trim.Length > 0){
         profile.RepositoryProfile.GetDatabase().ExecuteSql(profile.VariableReplace(trim), transaction);
     }
 }