示例#1
0
        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);
            }
        }
示例#2
0
 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);
     }
 }
示例#3
0
 public IEnumerable<dynamic> Query(string sql, object parameters = null)
 {
     try
     {
         return connection.Query(sql, parameters);
     }
     catch (DbException exception)
     {
         throw UpgraderException.CannotExecuteStatement(sql, parameters, exception);
     }
 }
示例#4
0
 public void Execute(string sql, object parameters = null)
 {
     try
     {
         connection.Execute(sql, parameters);
     }
     catch (DbException exception)
     {
         throw UpgraderException.CannotExecuteStatement(sql, parameters, exception);
     }
 }