public IDataProvider GetDataProvider(string connectionString) { Load(connectionString); return(ProviderHelper.GetDataProvider(Provider.ProviderName, connectionString)); }
public void Load(string connectionString) { if (IsLoaded) { return; } if (LoadException != null) { return; } try { IEnumerable <Assembly> loadLibraries = Provider.Libraries .Select(l => { try { return(Assembly.Load(Path.GetFileNameWithoutExtension(l))); } catch (Exception e) { Debug.WriteLine(e.Message); return(null); } } ) .Where(l => l != null) !; var providerLibraries = loadLibraries .Concat(new[] { typeof(DataConnection).Assembly }) .ToArray(); var typeName = Provider.InitializationClassName; if (!string.IsNullOrEmpty(typeName)) { var initType = Type.GetType(typeName, true) !; RuntimeHelpers.RunClassConstructor(initType.TypeHandle); } var provider = ProviderHelper.GetDataProvider(Provider.ProviderName, connectionString); var connectionAssemblies = new List <Assembly>() { provider.GetType().Assembly }; try { using var connection = provider.CreateConnection(connectionString); connectionAssemblies.Add(connection.GetType().Assembly); } catch { } LoadedAssemblies = connectionAssemblies .Concat(providerLibraries) .Distinct() .ToArray(); IsLoaded = true; } catch (Exception e) { LoadException = e; IsLoaded = false; } }