public ConnectionFactory(params AdoProvider[] adoProviders) { var assemblies = AppDomain.CurrentDomain.GetAssemblies(); var adoProviderAssembly = assemblies .Select(a => new AdoProviderAssembly(adoProviders.FirstOrDefault(ap => ap.AssemblyFileName == a.ManifestModule.Name), a)) .Where(apa => apa.AdoProvider != null) .OrderBy(apa => Array.IndexOf(adoProviders, apa.AdoProvider)) .FirstOrDefault(); if (adoProviderAssembly == null) { adoProviderAssembly = adoProviders.Where(ap => File.Exists(ap.AssemblyFileName)) .Select(ap => new AdoProviderAssembly(ap, Assembly.LoadFrom(ap.AssemblyFileName))) .FirstOrDefault(); } if (adoProviderAssembly == null) { throw UpgraderException.CannotFindAssembly(adoProviders.Select(ap => ap.AssemblyFileName).ToArray()); } var adoProvider = adoProviderAssembly.AdoProvider; var assembly = adoProviderAssembly.Assembly; connectionType = assembly.GetTypes().SingleOrDefault(type => type.Namespace + "." + type.Name == adoProvider.ConnectionTypeName); if (connectionType == null) { throw UpgraderException.CannotCreateInstance(adoProvider.ConnectionTypeName, adoProvider.AssemblyFileName); } }
public T ExecuteScalar<T>(string sql, object parameters = null) { try { return connection.ExecuteScalar<T>(sql, parameters); } catch (DbException exception) { throw UpgraderException.CannotExecuteStatement(sql, parameters, exception); } }
public IEnumerable<dynamic> Query(string sql, object parameters = null) { try { return connection.Query(sql, parameters); } catch (DbException exception) { throw UpgraderException.CannotExecuteStatement(sql, parameters, exception); } }
public void Execute(string sql, object parameters = null) { try { connection.Execute(sql, parameters); } catch (DbException exception) { throw UpgraderException.CannotExecuteStatement(sql, parameters, exception); } }