private static bool OpensSuccessfully(SupportedSyntax currentSyntax, ConnectionStringSettings setting, out string errorMessage) { errorMessage = null; switch (currentSyntax) { case SupportedSyntax.MySql: return(TryConnection(setting.Name, () => new MySqlConnection(setting.ConnectionString), out errorMessage)); case SupportedSyntax.SqlServer: return(TryConnection(setting.Name, () => new SqlConnection(setting.ConnectionString), out errorMessage)); } return(false); }
public static ScriptManager FromFile(string fileName, SupportedSyntax?syntax = null) { var assembly = Assembly.LoadFile(fileName); DefaultSqlSyntaxAttribute defaultSyntax; SupportedSyntax currentSyntax = syntax ?? ((assembly.HasAttribute(out defaultSyntax)) ? defaultSyntax.Syntax : throw new ArgumentException("Could not determine the SQL syntax. Please specify the SupportedSyntax argument or use the [DefaultSqlSyntaxAttribute] on the assembly.")); var result = new ScriptManager(); result.Assembly = assembly; result.Configuration = ConfigurationManager.OpenExeConfiguration(assembly.Location); result.CurrentSyntax = currentSyntax; List <string> connectionNames = new List <string>(); foreach (ConnectionStringSettings connectionStr in result.Configuration.ConnectionStrings.ConnectionStrings) { if (!IsLocalConfigElement(connectionStr, result.Configuration.FilePath)) { continue; } string errorMessage = null; if (ConnectionProviders[currentSyntax].ProviderNames.Contains(connectionStr.ProviderName) || OpensSuccessfully(currentSyntax, connectionStr, out errorMessage)) { connectionNames.Add(connectionStr.Name); } if (!string.IsNullOrEmpty(errorMessage)) { if (result.ConnectionErrors == null) { result.ConnectionErrors = new StringBuilder(); } result.ConnectionErrors.AppendLine(errorMessage); result.ConnectionErrors.AppendLine(); } } result.ConnectionNames = connectionNames.ToArray(); return(result); }
private static void Main(string[] args) { try { if (args.Length == 0) { throw new InvalidOperationException("MergeModel requires an assembly file name argument."); } string folder; string fileNameBase; string modelClassAssembly = FindModelAssembly(args, out folder, out fileNameBase); string connectionName = FindConnectionName(args); Action action = FindAction(args); Assembly assembly = Assembly.LoadFile(modelClassAssembly); var config = ConfigurationManager.OpenExeConfiguration(assembly.Location); DefaultSqlSyntaxAttribute syntaxAttr; SupportedSyntax syntaxValue = (assembly.HasAttribute(out syntaxAttr)) ? syntaxAttr.Syntax : FindSyntax(args); switch (syntaxValue) { case SupportedSyntax.MySql: RunMerge <MySqlDb <int>, MySqlSyntax>(assembly, new MySqlDb <int>(config, connectionName), action); break; case SupportedSyntax.SqlServer: RunMerge <SqlServerDb <int>, SqlServerSyntax>(assembly, new SqlServerDb <int>(config, connectionName), action); break; } } catch (Exception exc) { Console.WriteLine(exc.Message); } Console.ReadLine(); }
public DefaultSqlSyntaxAttribute(SupportedSyntax syntax) { _syntax = syntax; }