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;
                }
            }