IDataProviderFactory GetProviderFactory(Type type)
        {
            if (TypeProviderFactories.TryGetValue(type, out var factory))
            {
                return(factory);
            }

            if (AssemblyProviderFactories.TryGetValue(type.Assembly, out var result))
            {
                return(result);
            }

            return(null);
        }