/// <summary> /// Reads the script from disk /// </summary> /// <param name="script"> /// The script. /// </param> /// <returns> /// The script split into an array of strings. /// </returns> private static string[] ReadScript(SqlWorkflowInstanceStoreScript script) { return SqlReqex.Split(File.ReadAllText(GetScriptPath(script))); }
/// <summary> /// Gets the path to the SQL Script /// </summary> /// <param name="script"> /// The script type. /// </param> /// <returns> /// The script path. /// </returns> private static string GetScriptPath(SqlWorkflowInstanceStoreScript script) { return Path.Combine( RuntimeEnvironment.GetRuntimeDirectory(), string.Format(SqlWorkflowInstanceStoreSql, script)); }
private static void InvokeScript( SqlWorkflowInstanceStoreScript script, string databaseName, string connectionString) { using (var sqlConnection = new SqlConnection(ConfigureConnection(connectionString, databaseName))) using (var command = sqlConnection.CreateCommand()) { sqlConnection.Open(); foreach (var sqlStatement in GetScript(script).Where(sqlStatement => sqlStatement.Length > 0)) { command.CommandText = sqlStatement; command.ExecuteNonQuery(); } } }
/// <summary> /// Caches and returns a script loaded from file /// </summary> /// <param name="script"> /// The script. /// </param> /// <returns> /// The get script. /// </returns> private static IEnumerable<string> GetScript(SqlWorkflowInstanceStoreScript script) { switch (script) { case SqlWorkflowInstanceStoreScript.Logic: return logicScript ?? (logicScript = ReadScript(SqlWorkflowInstanceStoreScript.Logic)); case SqlWorkflowInstanceStoreScript.Schema: return schemaScript ?? (schemaScript = ReadScript(SqlWorkflowInstanceStoreScript.Schema)); } return null; }