Fixed CaseSenstive Issues (dotnet/corefx#38532)
authorErhan Atesoglu <47518605+eanova@users.noreply.github.com>
Tue, 18 Jun 2019 05:32:43 +0000 (22:32 -0700)
committerMaryam Ariyan <maryam.ariyan@microsoft.com>
Tue, 18 Jun 2019 05:32:43 +0000 (22:32 -0700)
Commit migrated from https://github.com/dotnet/corefx/commit/dc9a0f2c5c3e1718a75a9ed508e8a06309c174fb

src/libraries/System.Data.OleDb/src/OleDbConnectionStringBuilder.cs [new file with mode: 0644]
src/libraries/System.Data.OleDb/src/OledbConnectionStringbuilder.cs [deleted file]
src/libraries/System.Data.OleDb/src/System.Data.OleDb.csproj

diff --git a/src/libraries/System.Data.OleDb/src/OleDbConnectionStringBuilder.cs b/src/libraries/System.Data.OleDb/src/OleDbConnectionStringBuilder.cs
new file mode 100644 (file)
index 0000000..6a70683
--- /dev/null
@@ -0,0 +1,745 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
+using System.Collections;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data.Common;
+using System.Diagnostics;
+using System.Globalization;
+using System.Text;
+
+namespace System.Data.OleDb
+{
+    [DefaultProperty("Provider")]
+    [RefreshProperties(RefreshProperties.All)]
+    [TypeConverter(typeof(OleDbConnectionStringBuilder.OleDbConnectionStringBuilderConverter))]
+    public sealed class OleDbConnectionStringBuilder : DbConnectionStringBuilder
+    {
+        private enum Keywords
+        { // specific ordering for ConnectionString output construction
+          //          NamedConnection,
+            FileName,
+
+            Provider,
+            DataSource,
+            PersistSecurityInfo,
+
+            OleDbServices,
+        }
+
+        private static readonly string[] _validKeywords;
+        private static readonly Dictionary<string, Keywords> _keywords;
+
+        private string[] _knownKeywords;
+        private Dictionary<string, OleDbPropertyInfo> _propertyInfo;
+
+        private string _fileName = DbConnectionStringDefaults.FileName;
+
+        private string _dataSource = DbConnectionStringDefaults.DataSource;
+        private string _provider = DbConnectionStringDefaults.Provider;
+
+        private int _oleDbServices = DbConnectionStringDefaults.OleDbServices;
+
+        private bool _persistSecurityInfo = DbConnectionStringDefaults.PersistSecurityInfo;
+
+        static OleDbConnectionStringBuilder()
+        {
+            string[] validKeywords = new string[5];
+            validKeywords[(int)Keywords.DataSource] = DbConnectionStringKeywords.DataSource;
+            validKeywords[(int)Keywords.FileName] = DbConnectionStringKeywords.FileName;
+            validKeywords[(int)Keywords.OleDbServices] = DbConnectionStringKeywords.OleDbServices;
+            validKeywords[(int)Keywords.PersistSecurityInfo] = DbConnectionStringKeywords.PersistSecurityInfo;
+            validKeywords[(int)Keywords.Provider] = DbConnectionStringKeywords.Provider;
+            _validKeywords = validKeywords;
+
+            Dictionary<string, Keywords> hash = new Dictionary<string, Keywords>(9, StringComparer.OrdinalIgnoreCase);
+            hash.Add(DbConnectionStringKeywords.DataSource, Keywords.DataSource);
+            hash.Add(DbConnectionStringKeywords.FileName, Keywords.FileName);
+            hash.Add(DbConnectionStringKeywords.OleDbServices, Keywords.OleDbServices);
+            hash.Add(DbConnectionStringKeywords.PersistSecurityInfo, Keywords.PersistSecurityInfo);
+            hash.Add(DbConnectionStringKeywords.Provider, Keywords.Provider);
+            Debug.Assert(5 == hash.Count, "initial expected size is incorrect");
+            _keywords = hash;
+        }
+
+        public OleDbConnectionStringBuilder() : this(null)
+        {
+            _knownKeywords = _validKeywords;
+        }
+
+        public OleDbConnectionStringBuilder(string connectionString) : base()
+        {
+            if (!ADP.IsEmpty(connectionString))
+            {
+                ConnectionString = connectionString;
+            }
+        }
+
+        public override object this[string keyword]
+        {
+            get
+            {
+                ADP.CheckArgumentNull(keyword, "keyword");
+                object value;
+                Keywords index;
+                if (_keywords.TryGetValue(keyword, out index))
+                {
+                    value = GetAt(index);
+                }
+                else if (!base.TryGetValue(keyword, out value))
+                {
+                    Dictionary<string, OleDbPropertyInfo> dynamic = GetProviderInfo(Provider);
+                    OleDbPropertyInfo info = dynamic[keyword];
+                    value = info._defaultValue;
+                }
+                return value;
+            }
+            set
+            {
+                if (null != value)
+                {
+                    ADP.CheckArgumentNull(keyword, "keyword");
+                    Keywords index;
+                    if (_keywords.TryGetValue(keyword, out index))
+                    {
+                        switch (index)
+                        {
+                            case Keywords.DataSource:
+                                DataSource = ConvertToString(value);
+                                break;
+                            case Keywords.FileName:
+                                FileName = ConvertToString(value);
+                                break;
+                            //                      case Keywords.NamedConnection:     NamedConnection = ConvertToString(value); break;
+                            case Keywords.Provider:
+                                Provider = ConvertToString(value);
+                                break;
+
+                            case Keywords.OleDbServices:
+                                OleDbServices = ConvertToInt32(value);
+                                break;
+
+                            case Keywords.PersistSecurityInfo:
+                                PersistSecurityInfo = ConvertToBoolean(value);
+                                break;
+                            default:
+                                Debug.Assert(false, "unexpected keyword");
+                                throw ADP.KeywordNotSupported(keyword);
+                        }
+                    }
+                    else
+                    {
+                        base[keyword] = value;
+                        ClearPropertyDescriptors();
+                    }
+                }
+                else
+                {
+                    Remove(keyword);
+                }
+            }
+        }
+
+        [DisplayName(DbConnectionStringKeywords.DataSource)]
+        [RefreshProperties(RefreshProperties.All)]
+        // TODO: hand off to editor VS, if SQL - do database names, if Jet do file picker
+        public string DataSource
+        {
+            get { return _dataSource; }
+            set
+            {
+                SetValue(DbConnectionStringKeywords.DataSource, value);
+                _dataSource = value;
+            }
+        }
+
+        [DisplayName(DbConnectionStringKeywords.FileName)]
+        [RefreshProperties(RefreshProperties.All)]
+        // TODO: hand off to VS, they derive from FileNameEditor and set the OpenDialogFilter to *.UDL
+        public string FileName
+        {
+            get { return _fileName; }
+            set
+            {
+                SetValue(DbConnectionStringKeywords.FileName, value);
+                _fileName = value;
+            }
+        }
+
+        [DisplayName(DbConnectionStringKeywords.OleDbServices)]
+        [RefreshProperties(RefreshProperties.All)]
+        [TypeConverter(typeof(OleDbConnectionStringBuilder.OleDbServicesConverter))]
+        public int OleDbServices
+        {
+            get { return _oleDbServices; }
+            set
+            {
+                SetValue(DbConnectionStringKeywords.OleDbServices, value);
+                _oleDbServices = value;
+            }
+        }
+
+        [DisplayName(DbConnectionStringKeywords.PersistSecurityInfo)]
+        [RefreshProperties(RefreshProperties.All)]
+        public bool PersistSecurityInfo
+        {
+            get { return _persistSecurityInfo; }
+            set
+            {
+                SetValue(DbConnectionStringKeywords.PersistSecurityInfo, value);
+                _persistSecurityInfo = value;
+            }
+        }
+
+        [DisplayName(DbConnectionStringKeywords.Provider)]
+        [RefreshProperties(RefreshProperties.All)]
+        [TypeConverter(typeof(OleDbConnectionStringBuilder.OleDbProviderConverter))]
+        public string Provider
+        {
+            get { return _provider; }
+            set
+            {
+                SetValue(DbConnectionStringKeywords.Provider, value);
+                _provider = value;
+                RestartProvider();
+            }
+        }
+
+        public override ICollection Keys
+        {
+            get
+            {
+                string[] knownKeywords = _knownKeywords;
+                if (null == knownKeywords)
+                {
+                    Dictionary<string, OleDbPropertyInfo> dynamic = GetProviderInfo(Provider);
+                    if (0 < dynamic.Count)
+                    {
+                        knownKeywords = new string[_validKeywords.Length + dynamic.Count];
+                        _validKeywords.CopyTo(knownKeywords, 0);
+                        dynamic.Keys.CopyTo(knownKeywords, _validKeywords.Length);
+                    }
+                    else
+                    {
+                        knownKeywords = _validKeywords;
+                    }
+
+                    int count = 0;
+                    foreach (string keyword in base.Keys)
+                    {
+                        bool flag = true;
+                        foreach (string s in knownKeywords)
+                        {
+                            if (StringComparer.OrdinalIgnoreCase.Equals(s, keyword))
+                            {
+                                flag = false;
+                                break;
+                            }
+                        }
+                        if (flag)
+                        {
+                            count++;
+                        }
+                    }
+                    if (0 < count)
+                    {
+                        string[] tmp = new string[knownKeywords.Length + count];
+                        knownKeywords.CopyTo(tmp, 0);
+
+                        int index = knownKeywords.Length;
+                        foreach (string keyword in base.Keys)
+                        {
+                            bool flag = true;
+                            foreach (string s in knownKeywords)
+                            {
+                                if (StringComparer.OrdinalIgnoreCase.Equals(s, keyword))
+                                {
+                                    flag = false;
+                                    break;
+                                }
+                            }
+                            if (flag)
+                            {
+                                tmp[index++] = keyword;
+                            }
+                        }
+                        knownKeywords = tmp;
+                    }
+                    _knownKeywords = knownKeywords;
+                }
+                return new System.Data.Common.ReadOnlyCollection<string>(knownKeywords);
+            }
+        }
+
+        public override bool ContainsKey(string keyword)
+        {
+            ADP.CheckArgumentNull(keyword, "keyword");
+            return _keywords.ContainsKey(keyword) || base.ContainsKey(keyword);
+        }
+
+        private static bool ConvertToBoolean(object value)
+        {
+            return DbConnectionStringBuilderUtil.ConvertToBoolean(value);
+        }
+        private static int ConvertToInt32(object value)
+        {
+            return DbConnectionStringBuilderUtil.ConvertToInt32(value);
+        }
+        private static string ConvertToString(object value)
+        {
+            return DbConnectionStringBuilderUtil.ConvertToString(value);
+        }
+
+        public override void Clear()
+        {
+            base.Clear();
+            for (int i = 0; i < _validKeywords.Length; ++i)
+            {
+                Reset((Keywords)i);
+            }
+            base.ClearPropertyDescriptors();
+            _knownKeywords = _validKeywords;
+        }
+
+        private object GetAt(Keywords index)
+        {
+            switch (index)
+            {
+                case Keywords.DataSource:
+                    return DataSource;
+                case Keywords.FileName:
+                    return FileName;
+                //          case Keywords.NamedConnection:     return NamedConnection;
+                case Keywords.OleDbServices:
+                    return OleDbServices;
+                case Keywords.PersistSecurityInfo:
+                    return PersistSecurityInfo;
+                case Keywords.Provider:
+                    return Provider;
+                default:
+                    Debug.Assert(false, "unexpected keyword");
+                    throw ADP.KeywordNotSupported(_validKeywords[(int)index]);
+            }
+        }
+
+        public override bool Remove(string keyword)
+        {
+            ADP.CheckArgumentNull(keyword, "keyword");
+            bool value = base.Remove(keyword);
+
+            Keywords index;
+            if (_keywords.TryGetValue(keyword, out index))
+            {
+                Reset(index);
+            }
+            else if (value)
+            {
+                ClearPropertyDescriptors();
+            }
+            return value;
+        }
+
+        private void Reset(Keywords index)
+        {
+            switch (index)
+            {
+                case Keywords.DataSource:
+                    _dataSource = DbConnectionStringDefaults.DataSource;
+                    break;
+                case Keywords.FileName:
+                    _fileName = DbConnectionStringDefaults.FileName;
+                    RestartProvider();
+                    break;
+                case Keywords.OleDbServices:
+                    _oleDbServices = DbConnectionStringDefaults.OleDbServices;
+                    break;
+                case Keywords.PersistSecurityInfo:
+                    _persistSecurityInfo = DbConnectionStringDefaults.PersistSecurityInfo;
+                    break;
+                case Keywords.Provider:
+                    _provider = DbConnectionStringDefaults.Provider;
+                    RestartProvider();
+                    break;
+                default:
+                    Debug.Assert(false, "unexpected keyword");
+                    throw ADP.KeywordNotSupported(_validKeywords[(int)index]);
+            }
+        }
+
+        private new void ClearPropertyDescriptors()
+        {
+            base.ClearPropertyDescriptors();
+            _knownKeywords = null;
+        }
+
+        private void RestartProvider()
+        {
+            ClearPropertyDescriptors();
+            _propertyInfo = null;
+        }
+
+        private void SetValue(string keyword, bool value)
+        {
+            base[keyword] = value.ToString((System.IFormatProvider)null);
+        }
+        private void SetValue(string keyword, int value)
+        {
+            base[keyword] = value.ToString((System.IFormatProvider)null);
+        }
+        private void SetValue(string keyword, string value)
+        {
+            ADP.CheckArgumentNull(value, keyword);
+            base[keyword] = value;
+        }
+
+        public override bool TryGetValue(string keyword, out object value)
+        {
+            ADP.CheckArgumentNull(keyword, "keyword");
+            Keywords index;
+            if (_keywords.TryGetValue(keyword, out index))
+            {
+                value = GetAt(index);
+                return true;
+            }
+            else if (!base.TryGetValue(keyword, out value))
+            {
+                Dictionary<string, OleDbPropertyInfo> dynamic = GetProviderInfo(Provider);
+                OleDbPropertyInfo info;
+                if (dynamic.TryGetValue(keyword, out info))
+                {
+                    value = info._defaultValue;
+                    return true;
+                }
+                return false;
+            }
+            return true;
+        }
+
+        private Dictionary<string, OleDbPropertyInfo> GetProviderInfo(string provider)
+        {
+            Dictionary<string, OleDbPropertyInfo> providerInfo = _propertyInfo;
+            if (null == providerInfo)
+            {
+                providerInfo = new Dictionary<string, OleDbPropertyInfo>(StringComparer.OrdinalIgnoreCase);
+                if (!ADP.IsEmpty(provider))
+                {
+                    Dictionary<string, OleDbPropertyInfo> hash = null;
+                    try
+                    {
+                        StringBuilder builder = new StringBuilder();
+                        AppendKeyValuePair(builder, DbConnectionStringKeywords.Provider, provider);
+                        OleDbConnectionString constr = new OleDbConnectionString(builder.ToString(), true);
+
+                        // load provider without calling Initialize or CreateDataSource
+                        using (OleDbConnectionInternal connection = new OleDbConnectionInternal(constr, (OleDbConnection)null))
+                        {
+                            // get all the init property information for the provider
+                            hash = connection.GetPropertyInfo(new Guid[] { OleDbPropertySetGuid.DBInitAll });
+                            foreach (KeyValuePair<string, OleDbPropertyInfo> entry in hash)
+                            {
+                                Keywords index;
+                                OleDbPropertyInfo info = entry.Value;
+                                if (!_keywords.TryGetValue(info._description, out index))
+                                {
+                                    if ((OleDbPropertySetGuid.DBInit == info._propertySet) &&
+                                            ((ODB.DBPROP_INIT_ASYNCH == info._propertyID) ||
+                                             (ODB.DBPROP_INIT_HWND == info._propertyID) ||
+                                             (ODB.DBPROP_INIT_PROMPT == info._propertyID)))
+                                    {
+                                        continue; // skip this keyword
+                                    }
+                                    providerInfo[info._description] = info;
+                                }
+                            }
+
+                            // what are the unique propertysets?
+                            List<Guid> listPropertySets = new List<Guid>();
+                            foreach (KeyValuePair<string, OleDbPropertyInfo> entry in hash)
+                            {
+                                OleDbPropertyInfo info = entry.Value;
+                                if (!listPropertySets.Contains(info._propertySet))
+                                {
+                                    listPropertySets.Add(info._propertySet);
+                                }
+                            }
+                            Guid[] arrayPropertySets = new Guid[listPropertySets.Count];
+                            listPropertySets.CopyTo(arrayPropertySets, 0);
+
+                            // get all the init property values for the provider
+                            using (PropertyIDSet propidset = new PropertyIDSet(arrayPropertySets))
+                            {
+                                using (IDBPropertiesWrapper idbProperties = connection.IDBProperties())
+                                {
+                                    OleDbHResult hr;
+                                    using (DBPropSet propset = new DBPropSet(idbProperties.Value, propidset, out hr))
+                                    {
+                                        // OleDbConnectionStringBuilder is ignoring/hiding potential errors of OLEDB provider when reading its properties information
+                                        if (0 <= (int)hr)
+                                        {
+                                            int count = propset.PropertySetCount;
+                                            for (int i = 0; i < count; ++i)
+                                            {
+                                                Guid propertyset;
+                                                tagDBPROP[] props = propset.GetPropertySet(i, out propertyset);
+
+                                                // attach the default property value to the property info
+                                                foreach (tagDBPROP prop in props)
+                                                {
+                                                    foreach (KeyValuePair<string, OleDbPropertyInfo> entry in hash)
+                                                    {
+                                                        OleDbPropertyInfo info = entry.Value;
+                                                        if ((info._propertyID == prop.dwPropertyID) && (info._propertySet == propertyset))
+                                                        {
+                                                            info._defaultValue = prop.vValue;
+
+                                                            if (null == info._defaultValue)
+                                                            {
+                                                                if (typeof(string) == info._type)
+                                                                {
+                                                                    info._defaultValue = "";
+                                                                }
+                                                                else if (typeof(Int32) == info._type)
+                                                                {
+                                                                    info._defaultValue = 0;
+                                                                }
+                                                                else if (typeof(Boolean) == info._type)
+                                                                {
+                                                                    info._defaultValue = false;
+                                                                }
+                                                            }
+                                                        }
+                                                    }
+                                                }
+                                            }
+                                        }
+                                    }
+                                }
+                            }
+                        }
+                    }
+                    catch (System.InvalidOperationException e)
+                    {
+                        ADP.TraceExceptionWithoutRethrow(e);
+                    }
+                    catch (System.Data.OleDb.OleDbException e)
+                    {
+                        ADP.TraceExceptionWithoutRethrow(e);
+                    }
+                    catch (System.Security.SecurityException e)
+                    {
+                        ADP.TraceExceptionWithoutRethrow(e);
+                    }
+                }
+                _propertyInfo = providerInfo;
+            }
+            return providerInfo;
+        }
+
+        private sealed class OleDbProviderConverter : StringConverter
+        {
+            private const int DBSOURCETYPE_DATASOURCE_TDP = 1;
+            private const int DBSOURCETYPE_DATASOURCE_MDP = 3;
+
+            private StandardValuesCollection _standardValues;
+
+            // converter classes should have public ctor
+            public OleDbProviderConverter()
+            {
+            }
+
+            public override bool GetStandardValuesSupported(ITypeDescriptorContext context)
+            {
+                return true;
+            }
+
+            public override bool GetStandardValuesExclusive(ITypeDescriptorContext context)
+            {
+                return false;
+            }
+
+            public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context)
+            {
+                StandardValuesCollection dataSourceNames = _standardValues;
+                if (null == _standardValues)
+                {
+                    // Get the sources rowset for the SQLOLEDB enumerator
+                    DataTable table = (new OleDbEnumerator()).GetElements();
+
+                    DataColumn column2 = table.Columns["SOURCES_NAME"];
+                    DataColumn column5 = table.Columns["SOURCES_TYPE"];
+                    //DataColumn column4 = table.Columns["SOURCES_DESCRIPTION"];
+
+                    System.Collections.Generic.List<string> providerNames = new System.Collections.Generic.List<string>(table.Rows.Count);
+                    foreach (DataRow row in table.Rows)
+                    {
+                        int sourceType = (int)row[column5];
+                        if (DBSOURCETYPE_DATASOURCE_TDP == sourceType || DBSOURCETYPE_DATASOURCE_MDP == sourceType)
+                        {
+                            string progid = (string)row[column2];
+                            if (!OleDbConnectionString.IsMSDASQL(progid.ToLower(CultureInfo.InvariantCulture)))
+                            {
+                                if (0 > providerNames.IndexOf(progid))
+                                {
+                                    providerNames.Add(progid);
+                                }
+                            }
+                        }
+                    }
+
+                    // Create the standard values collection that contains the sources
+                    dataSourceNames = new StandardValuesCollection(providerNames);
+                    _standardValues = dataSourceNames;
+                }
+                return dataSourceNames;
+            }
+        }
+
+        [Flags()]
+        internal enum OleDbServiceValues : int
+        {
+            DisableAll = unchecked((int)0x00000000),
+            ResourcePooling = unchecked((int)0x00000001),
+            TransactionEnlistment = unchecked((int)0x00000002),
+            ClientCursor = unchecked((int)0x00000004),
+            AggregationAfterSession = unchecked((int)0x00000008),
+            EnableAll = unchecked((int)0xffffffff),
+            Default = ~(ClientCursor | AggregationAfterSession),
+        };
+
+        internal sealed class OleDbServicesConverter : TypeConverter
+        {
+            private StandardValuesCollection _standardValues;
+
+            // converter classes should have public ctor
+            public OleDbServicesConverter() : base()
+            {
+            }
+
+            public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType)
+            {
+                // Only know how to convert from a string
+                return ((typeof(string) == sourceType) || base.CanConvertFrom(context, sourceType));
+            }
+
+            public override object ConvertFrom(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value)
+            {
+                string svalue = (value as string);
+                if (null != svalue)
+                {
+                    Int32 services;
+                    if (Int32.TryParse(svalue, out services))
+                    {
+                        return services;
+                    }
+                    else
+                    {
+                        if (svalue.IndexOf(',') != -1)
+                        {
+                            int convertedValue = 0;
+                            string[] values = svalue.Split(new char[] { ',' });
+                            foreach (string v in values)
+                            {
+                                convertedValue |= (int)(OleDbServiceValues)Enum.Parse(typeof(OleDbServiceValues), v, true);
+                            }
+                            return (int)convertedValue;
+                            ;
+                        }
+                        else
+                        {
+                            return (int)(OleDbServiceValues)Enum.Parse(typeof(OleDbServiceValues), svalue, true);
+                        }
+                    }
+                }
+                return base.ConvertFrom(context, culture, value);
+            }
+
+            public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType)
+            {
+                // Only know how to convert to the NetworkLibrary enumeration
+                return ((typeof(string) == destinationType) || base.CanConvertTo(context, destinationType));
+            }
+
+            public override object ConvertTo(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value, Type destinationType)
+            {
+                if ((typeof(string) == destinationType) && (null != value) && (typeof(Int32) == value.GetType()))
+                {
+                    return Enum.Format(typeof(OleDbServiceValues), ((OleDbServiceValues)(int)value), "G");
+                }
+                return base.ConvertTo(context, culture, value, destinationType);
+            }
+
+            public override bool GetStandardValuesSupported(ITypeDescriptorContext context)
+            {
+                return true;
+            }
+
+            public override bool GetStandardValuesExclusive(ITypeDescriptorContext context)
+            {
+                return false;
+            }
+
+            public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context)
+            {
+                StandardValuesCollection standardValues = _standardValues;
+                if (null == standardValues)
+                {
+                    Array objValues = Enum.GetValues(typeof(OleDbServiceValues));
+                    Array.Sort(objValues, 0, objValues.Length);
+                    standardValues = new StandardValuesCollection(objValues);
+                    _standardValues = standardValues;
+                }
+                return standardValues;
+            }
+
+            public override bool IsValid(ITypeDescriptorContext context, object value)
+            {
+                return true;
+                //return Enum.IsDefined(type, value);
+            }
+        }
+
+        sealed internal class OleDbConnectionStringBuilderConverter : ExpandableObjectConverter
+        {
+            // converter classes should have public ctor
+            public OleDbConnectionStringBuilderConverter()
+            {
+            }
+
+            override public bool CanConvertTo(ITypeDescriptorContext context, Type destinationType)
+            {
+                if (typeof(System.ComponentModel.Design.Serialization.InstanceDescriptor) == destinationType)
+                {
+                    return true;
+                }
+                return base.CanConvertTo(context, destinationType);
+            }
+
+            override public object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType)
+            {
+                if (destinationType == null)
+                {
+                    throw ADP.ArgumentNull("destinationType");
+                }
+                if (typeof(System.ComponentModel.Design.Serialization.InstanceDescriptor) == destinationType)
+                {
+                    OleDbConnectionStringBuilder obj = (value as OleDbConnectionStringBuilder);
+                    if (null != obj)
+                    {
+                        return ConvertToInstanceDescriptor(obj);
+                    }
+                }
+                return base.ConvertTo(context, culture, value, destinationType);
+            }
+
+            private System.ComponentModel.Design.Serialization.InstanceDescriptor ConvertToInstanceDescriptor(OleDbConnectionStringBuilder options)
+            {
+                Type[] ctorParams = new Type[] { typeof(string) };
+                object[] ctorValues = new object[] { options.ConnectionString };
+                System.Reflection.ConstructorInfo ctor = typeof(OleDbConnectionStringBuilder).GetConstructor(ctorParams);
+                return new System.ComponentModel.Design.Serialization.InstanceDescriptor(ctor, ctorValues);
+            }
+        }
+    }
+}
diff --git a/src/libraries/System.Data.OleDb/src/OledbConnectionStringbuilder.cs b/src/libraries/System.Data.OleDb/src/OledbConnectionStringbuilder.cs
deleted file mode 100644 (file)
index 6a70683..0000000
+++ /dev/null
@@ -1,745 +0,0 @@
-// Licensed to the .NET Foundation under one or more agreements.
-// The .NET Foundation licenses this file to you under the MIT license.
-// See the LICENSE file in the project root for more information.
-
-using System.Collections;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Data.Common;
-using System.Diagnostics;
-using System.Globalization;
-using System.Text;
-
-namespace System.Data.OleDb
-{
-    [DefaultProperty("Provider")]
-    [RefreshProperties(RefreshProperties.All)]
-    [TypeConverter(typeof(OleDbConnectionStringBuilder.OleDbConnectionStringBuilderConverter))]
-    public sealed class OleDbConnectionStringBuilder : DbConnectionStringBuilder
-    {
-        private enum Keywords
-        { // specific ordering for ConnectionString output construction
-          //          NamedConnection,
-            FileName,
-
-            Provider,
-            DataSource,
-            PersistSecurityInfo,
-
-            OleDbServices,
-        }
-
-        private static readonly string[] _validKeywords;
-        private static readonly Dictionary<string, Keywords> _keywords;
-
-        private string[] _knownKeywords;
-        private Dictionary<string, OleDbPropertyInfo> _propertyInfo;
-
-        private string _fileName = DbConnectionStringDefaults.FileName;
-
-        private string _dataSource = DbConnectionStringDefaults.DataSource;
-        private string _provider = DbConnectionStringDefaults.Provider;
-
-        private int _oleDbServices = DbConnectionStringDefaults.OleDbServices;
-
-        private bool _persistSecurityInfo = DbConnectionStringDefaults.PersistSecurityInfo;
-
-        static OleDbConnectionStringBuilder()
-        {
-            string[] validKeywords = new string[5];
-            validKeywords[(int)Keywords.DataSource] = DbConnectionStringKeywords.DataSource;
-            validKeywords[(int)Keywords.FileName] = DbConnectionStringKeywords.FileName;
-            validKeywords[(int)Keywords.OleDbServices] = DbConnectionStringKeywords.OleDbServices;
-            validKeywords[(int)Keywords.PersistSecurityInfo] = DbConnectionStringKeywords.PersistSecurityInfo;
-            validKeywords[(int)Keywords.Provider] = DbConnectionStringKeywords.Provider;
-            _validKeywords = validKeywords;
-
-            Dictionary<string, Keywords> hash = new Dictionary<string, Keywords>(9, StringComparer.OrdinalIgnoreCase);
-            hash.Add(DbConnectionStringKeywords.DataSource, Keywords.DataSource);
-            hash.Add(DbConnectionStringKeywords.FileName, Keywords.FileName);
-            hash.Add(DbConnectionStringKeywords.OleDbServices, Keywords.OleDbServices);
-            hash.Add(DbConnectionStringKeywords.PersistSecurityInfo, Keywords.PersistSecurityInfo);
-            hash.Add(DbConnectionStringKeywords.Provider, Keywords.Provider);
-            Debug.Assert(5 == hash.Count, "initial expected size is incorrect");
-            _keywords = hash;
-        }
-
-        public OleDbConnectionStringBuilder() : this(null)
-        {
-            _knownKeywords = _validKeywords;
-        }
-
-        public OleDbConnectionStringBuilder(string connectionString) : base()
-        {
-            if (!ADP.IsEmpty(connectionString))
-            {
-                ConnectionString = connectionString;
-            }
-        }
-
-        public override object this[string keyword]
-        {
-            get
-            {
-                ADP.CheckArgumentNull(keyword, "keyword");
-                object value;
-                Keywords index;
-                if (_keywords.TryGetValue(keyword, out index))
-                {
-                    value = GetAt(index);
-                }
-                else if (!base.TryGetValue(keyword, out value))
-                {
-                    Dictionary<string, OleDbPropertyInfo> dynamic = GetProviderInfo(Provider);
-                    OleDbPropertyInfo info = dynamic[keyword];
-                    value = info._defaultValue;
-                }
-                return value;
-            }
-            set
-            {
-                if (null != value)
-                {
-                    ADP.CheckArgumentNull(keyword, "keyword");
-                    Keywords index;
-                    if (_keywords.TryGetValue(keyword, out index))
-                    {
-                        switch (index)
-                        {
-                            case Keywords.DataSource:
-                                DataSource = ConvertToString(value);
-                                break;
-                            case Keywords.FileName:
-                                FileName = ConvertToString(value);
-                                break;
-                            //                      case Keywords.NamedConnection:     NamedConnection = ConvertToString(value); break;
-                            case Keywords.Provider:
-                                Provider = ConvertToString(value);
-                                break;
-
-                            case Keywords.OleDbServices:
-                                OleDbServices = ConvertToInt32(value);
-                                break;
-
-                            case Keywords.PersistSecurityInfo:
-                                PersistSecurityInfo = ConvertToBoolean(value);
-                                break;
-                            default:
-                                Debug.Assert(false, "unexpected keyword");
-                                throw ADP.KeywordNotSupported(keyword);
-                        }
-                    }
-                    else
-                    {
-                        base[keyword] = value;
-                        ClearPropertyDescriptors();
-                    }
-                }
-                else
-                {
-                    Remove(keyword);
-                }
-            }
-        }
-
-        [DisplayName(DbConnectionStringKeywords.DataSource)]
-        [RefreshProperties(RefreshProperties.All)]
-        // TODO: hand off to editor VS, if SQL - do database names, if Jet do file picker
-        public string DataSource
-        {
-            get { return _dataSource; }
-            set
-            {
-                SetValue(DbConnectionStringKeywords.DataSource, value);
-                _dataSource = value;
-            }
-        }
-
-        [DisplayName(DbConnectionStringKeywords.FileName)]
-        [RefreshProperties(RefreshProperties.All)]
-        // TODO: hand off to VS, they derive from FileNameEditor and set the OpenDialogFilter to *.UDL
-        public string FileName
-        {
-            get { return _fileName; }
-            set
-            {
-                SetValue(DbConnectionStringKeywords.FileName, value);
-                _fileName = value;
-            }
-        }
-
-        [DisplayName(DbConnectionStringKeywords.OleDbServices)]
-        [RefreshProperties(RefreshProperties.All)]
-        [TypeConverter(typeof(OleDbConnectionStringBuilder.OleDbServicesConverter))]
-        public int OleDbServices
-        {
-            get { return _oleDbServices; }
-            set
-            {
-                SetValue(DbConnectionStringKeywords.OleDbServices, value);
-                _oleDbServices = value;
-            }
-        }
-
-        [DisplayName(DbConnectionStringKeywords.PersistSecurityInfo)]
-        [RefreshProperties(RefreshProperties.All)]
-        public bool PersistSecurityInfo
-        {
-            get { return _persistSecurityInfo; }
-            set
-            {
-                SetValue(DbConnectionStringKeywords.PersistSecurityInfo, value);
-                _persistSecurityInfo = value;
-            }
-        }
-
-        [DisplayName(DbConnectionStringKeywords.Provider)]
-        [RefreshProperties(RefreshProperties.All)]
-        [TypeConverter(typeof(OleDbConnectionStringBuilder.OleDbProviderConverter))]
-        public string Provider
-        {
-            get { return _provider; }
-            set
-            {
-                SetValue(DbConnectionStringKeywords.Provider, value);
-                _provider = value;
-                RestartProvider();
-            }
-        }
-
-        public override ICollection Keys
-        {
-            get
-            {
-                string[] knownKeywords = _knownKeywords;
-                if (null == knownKeywords)
-                {
-                    Dictionary<string, OleDbPropertyInfo> dynamic = GetProviderInfo(Provider);
-                    if (0 < dynamic.Count)
-                    {
-                        knownKeywords = new string[_validKeywords.Length + dynamic.Count];
-                        _validKeywords.CopyTo(knownKeywords, 0);
-                        dynamic.Keys.CopyTo(knownKeywords, _validKeywords.Length);
-                    }
-                    else
-                    {
-                        knownKeywords = _validKeywords;
-                    }
-
-                    int count = 0;
-                    foreach (string keyword in base.Keys)
-                    {
-                        bool flag = true;
-                        foreach (string s in knownKeywords)
-                        {
-                            if (StringComparer.OrdinalIgnoreCase.Equals(s, keyword))
-                            {
-                                flag = false;
-                                break;
-                            }
-                        }
-                        if (flag)
-                        {
-                            count++;
-                        }
-                    }
-                    if (0 < count)
-                    {
-                        string[] tmp = new string[knownKeywords.Length + count];
-                        knownKeywords.CopyTo(tmp, 0);
-
-                        int index = knownKeywords.Length;
-                        foreach (string keyword in base.Keys)
-                        {
-                            bool flag = true;
-                            foreach (string s in knownKeywords)
-                            {
-                                if (StringComparer.OrdinalIgnoreCase.Equals(s, keyword))
-                                {
-                                    flag = false;
-                                    break;
-                                }
-                            }
-                            if (flag)
-                            {
-                                tmp[index++] = keyword;
-                            }
-                        }
-                        knownKeywords = tmp;
-                    }
-                    _knownKeywords = knownKeywords;
-                }
-                return new System.Data.Common.ReadOnlyCollection<string>(knownKeywords);
-            }
-        }
-
-        public override bool ContainsKey(string keyword)
-        {
-            ADP.CheckArgumentNull(keyword, "keyword");
-            return _keywords.ContainsKey(keyword) || base.ContainsKey(keyword);
-        }
-
-        private static bool ConvertToBoolean(object value)
-        {
-            return DbConnectionStringBuilderUtil.ConvertToBoolean(value);
-        }
-        private static int ConvertToInt32(object value)
-        {
-            return DbConnectionStringBuilderUtil.ConvertToInt32(value);
-        }
-        private static string ConvertToString(object value)
-        {
-            return DbConnectionStringBuilderUtil.ConvertToString(value);
-        }
-
-        public override void Clear()
-        {
-            base.Clear();
-            for (int i = 0; i < _validKeywords.Length; ++i)
-            {
-                Reset((Keywords)i);
-            }
-            base.ClearPropertyDescriptors();
-            _knownKeywords = _validKeywords;
-        }
-
-        private object GetAt(Keywords index)
-        {
-            switch (index)
-            {
-                case Keywords.DataSource:
-                    return DataSource;
-                case Keywords.FileName:
-                    return FileName;
-                //          case Keywords.NamedConnection:     return NamedConnection;
-                case Keywords.OleDbServices:
-                    return OleDbServices;
-                case Keywords.PersistSecurityInfo:
-                    return PersistSecurityInfo;
-                case Keywords.Provider:
-                    return Provider;
-                default:
-                    Debug.Assert(false, "unexpected keyword");
-                    throw ADP.KeywordNotSupported(_validKeywords[(int)index]);
-            }
-        }
-
-        public override bool Remove(string keyword)
-        {
-            ADP.CheckArgumentNull(keyword, "keyword");
-            bool value = base.Remove(keyword);
-
-            Keywords index;
-            if (_keywords.TryGetValue(keyword, out index))
-            {
-                Reset(index);
-            }
-            else if (value)
-            {
-                ClearPropertyDescriptors();
-            }
-            return value;
-        }
-
-        private void Reset(Keywords index)
-        {
-            switch (index)
-            {
-                case Keywords.DataSource:
-                    _dataSource = DbConnectionStringDefaults.DataSource;
-                    break;
-                case Keywords.FileName:
-                    _fileName = DbConnectionStringDefaults.FileName;
-                    RestartProvider();
-                    break;
-                case Keywords.OleDbServices:
-                    _oleDbServices = DbConnectionStringDefaults.OleDbServices;
-                    break;
-                case Keywords.PersistSecurityInfo:
-                    _persistSecurityInfo = DbConnectionStringDefaults.PersistSecurityInfo;
-                    break;
-                case Keywords.Provider:
-                    _provider = DbConnectionStringDefaults.Provider;
-                    RestartProvider();
-                    break;
-                default:
-                    Debug.Assert(false, "unexpected keyword");
-                    throw ADP.KeywordNotSupported(_validKeywords[(int)index]);
-            }
-        }
-
-        private new void ClearPropertyDescriptors()
-        {
-            base.ClearPropertyDescriptors();
-            _knownKeywords = null;
-        }
-
-        private void RestartProvider()
-        {
-            ClearPropertyDescriptors();
-            _propertyInfo = null;
-        }
-
-        private void SetValue(string keyword, bool value)
-        {
-            base[keyword] = value.ToString((System.IFormatProvider)null);
-        }
-        private void SetValue(string keyword, int value)
-        {
-            base[keyword] = value.ToString((System.IFormatProvider)null);
-        }
-        private void SetValue(string keyword, string value)
-        {
-            ADP.CheckArgumentNull(value, keyword);
-            base[keyword] = value;
-        }
-
-        public override bool TryGetValue(string keyword, out object value)
-        {
-            ADP.CheckArgumentNull(keyword, "keyword");
-            Keywords index;
-            if (_keywords.TryGetValue(keyword, out index))
-            {
-                value = GetAt(index);
-                return true;
-            }
-            else if (!base.TryGetValue(keyword, out value))
-            {
-                Dictionary<string, OleDbPropertyInfo> dynamic = GetProviderInfo(Provider);
-                OleDbPropertyInfo info;
-                if (dynamic.TryGetValue(keyword, out info))
-                {
-                    value = info._defaultValue;
-                    return true;
-                }
-                return false;
-            }
-            return true;
-        }
-
-        private Dictionary<string, OleDbPropertyInfo> GetProviderInfo(string provider)
-        {
-            Dictionary<string, OleDbPropertyInfo> providerInfo = _propertyInfo;
-            if (null == providerInfo)
-            {
-                providerInfo = new Dictionary<string, OleDbPropertyInfo>(StringComparer.OrdinalIgnoreCase);
-                if (!ADP.IsEmpty(provider))
-                {
-                    Dictionary<string, OleDbPropertyInfo> hash = null;
-                    try
-                    {
-                        StringBuilder builder = new StringBuilder();
-                        AppendKeyValuePair(builder, DbConnectionStringKeywords.Provider, provider);
-                        OleDbConnectionString constr = new OleDbConnectionString(builder.ToString(), true);
-
-                        // load provider without calling Initialize or CreateDataSource
-                        using (OleDbConnectionInternal connection = new OleDbConnectionInternal(constr, (OleDbConnection)null))
-                        {
-                            // get all the init property information for the provider
-                            hash = connection.GetPropertyInfo(new Guid[] { OleDbPropertySetGuid.DBInitAll });
-                            foreach (KeyValuePair<string, OleDbPropertyInfo> entry in hash)
-                            {
-                                Keywords index;
-                                OleDbPropertyInfo info = entry.Value;
-                                if (!_keywords.TryGetValue(info._description, out index))
-                                {
-                                    if ((OleDbPropertySetGuid.DBInit == info._propertySet) &&
-                                            ((ODB.DBPROP_INIT_ASYNCH == info._propertyID) ||
-                                             (ODB.DBPROP_INIT_HWND == info._propertyID) ||
-                                             (ODB.DBPROP_INIT_PROMPT == info._propertyID)))
-                                    {
-                                        continue; // skip this keyword
-                                    }
-                                    providerInfo[info._description] = info;
-                                }
-                            }
-
-                            // what are the unique propertysets?
-                            List<Guid> listPropertySets = new List<Guid>();
-                            foreach (KeyValuePair<string, OleDbPropertyInfo> entry in hash)
-                            {
-                                OleDbPropertyInfo info = entry.Value;
-                                if (!listPropertySets.Contains(info._propertySet))
-                                {
-                                    listPropertySets.Add(info._propertySet);
-                                }
-                            }
-                            Guid[] arrayPropertySets = new Guid[listPropertySets.Count];
-                            listPropertySets.CopyTo(arrayPropertySets, 0);
-
-                            // get all the init property values for the provider
-                            using (PropertyIDSet propidset = new PropertyIDSet(arrayPropertySets))
-                            {
-                                using (IDBPropertiesWrapper idbProperties = connection.IDBProperties())
-                                {
-                                    OleDbHResult hr;
-                                    using (DBPropSet propset = new DBPropSet(idbProperties.Value, propidset, out hr))
-                                    {
-                                        // OleDbConnectionStringBuilder is ignoring/hiding potential errors of OLEDB provider when reading its properties information
-                                        if (0 <= (int)hr)
-                                        {
-                                            int count = propset.PropertySetCount;
-                                            for (int i = 0; i < count; ++i)
-                                            {
-                                                Guid propertyset;
-                                                tagDBPROP[] props = propset.GetPropertySet(i, out propertyset);
-
-                                                // attach the default property value to the property info
-                                                foreach (tagDBPROP prop in props)
-                                                {
-                                                    foreach (KeyValuePair<string, OleDbPropertyInfo> entry in hash)
-                                                    {
-                                                        OleDbPropertyInfo info = entry.Value;
-                                                        if ((info._propertyID == prop.dwPropertyID) && (info._propertySet == propertyset))
-                                                        {
-                                                            info._defaultValue = prop.vValue;
-
-                                                            if (null == info._defaultValue)
-                                                            {
-                                                                if (typeof(string) == info._type)
-                                                                {
-                                                                    info._defaultValue = "";
-                                                                }
-                                                                else if (typeof(Int32) == info._type)
-                                                                {
-                                                                    info._defaultValue = 0;
-                                                                }
-                                                                else if (typeof(Boolean) == info._type)
-                                                                {
-                                                                    info._defaultValue = false;
-                                                                }
-                                                            }
-                                                        }
-                                                    }
-                                                }
-                                            }
-                                        }
-                                    }
-                                }
-                            }
-                        }
-                    }
-                    catch (System.InvalidOperationException e)
-                    {
-                        ADP.TraceExceptionWithoutRethrow(e);
-                    }
-                    catch (System.Data.OleDb.OleDbException e)
-                    {
-                        ADP.TraceExceptionWithoutRethrow(e);
-                    }
-                    catch (System.Security.SecurityException e)
-                    {
-                        ADP.TraceExceptionWithoutRethrow(e);
-                    }
-                }
-                _propertyInfo = providerInfo;
-            }
-            return providerInfo;
-        }
-
-        private sealed class OleDbProviderConverter : StringConverter
-        {
-            private const int DBSOURCETYPE_DATASOURCE_TDP = 1;
-            private const int DBSOURCETYPE_DATASOURCE_MDP = 3;
-
-            private StandardValuesCollection _standardValues;
-
-            // converter classes should have public ctor
-            public OleDbProviderConverter()
-            {
-            }
-
-            public override bool GetStandardValuesSupported(ITypeDescriptorContext context)
-            {
-                return true;
-            }
-
-            public override bool GetStandardValuesExclusive(ITypeDescriptorContext context)
-            {
-                return false;
-            }
-
-            public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context)
-            {
-                StandardValuesCollection dataSourceNames = _standardValues;
-                if (null == _standardValues)
-                {
-                    // Get the sources rowset for the SQLOLEDB enumerator
-                    DataTable table = (new OleDbEnumerator()).GetElements();
-
-                    DataColumn column2 = table.Columns["SOURCES_NAME"];
-                    DataColumn column5 = table.Columns["SOURCES_TYPE"];
-                    //DataColumn column4 = table.Columns["SOURCES_DESCRIPTION"];
-
-                    System.Collections.Generic.List<string> providerNames = new System.Collections.Generic.List<string>(table.Rows.Count);
-                    foreach (DataRow row in table.Rows)
-                    {
-                        int sourceType = (int)row[column5];
-                        if (DBSOURCETYPE_DATASOURCE_TDP == sourceType || DBSOURCETYPE_DATASOURCE_MDP == sourceType)
-                        {
-                            string progid = (string)row[column2];
-                            if (!OleDbConnectionString.IsMSDASQL(progid.ToLower(CultureInfo.InvariantCulture)))
-                            {
-                                if (0 > providerNames.IndexOf(progid))
-                                {
-                                    providerNames.Add(progid);
-                                }
-                            }
-                        }
-                    }
-
-                    // Create the standard values collection that contains the sources
-                    dataSourceNames = new StandardValuesCollection(providerNames);
-                    _standardValues = dataSourceNames;
-                }
-                return dataSourceNames;
-            }
-        }
-
-        [Flags()]
-        internal enum OleDbServiceValues : int
-        {
-            DisableAll = unchecked((int)0x00000000),
-            ResourcePooling = unchecked((int)0x00000001),
-            TransactionEnlistment = unchecked((int)0x00000002),
-            ClientCursor = unchecked((int)0x00000004),
-            AggregationAfterSession = unchecked((int)0x00000008),
-            EnableAll = unchecked((int)0xffffffff),
-            Default = ~(ClientCursor | AggregationAfterSession),
-        };
-
-        internal sealed class OleDbServicesConverter : TypeConverter
-        {
-            private StandardValuesCollection _standardValues;
-
-            // converter classes should have public ctor
-            public OleDbServicesConverter() : base()
-            {
-            }
-
-            public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType)
-            {
-                // Only know how to convert from a string
-                return ((typeof(string) == sourceType) || base.CanConvertFrom(context, sourceType));
-            }
-
-            public override object ConvertFrom(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value)
-            {
-                string svalue = (value as string);
-                if (null != svalue)
-                {
-                    Int32 services;
-                    if (Int32.TryParse(svalue, out services))
-                    {
-                        return services;
-                    }
-                    else
-                    {
-                        if (svalue.IndexOf(',') != -1)
-                        {
-                            int convertedValue = 0;
-                            string[] values = svalue.Split(new char[] { ',' });
-                            foreach (string v in values)
-                            {
-                                convertedValue |= (int)(OleDbServiceValues)Enum.Parse(typeof(OleDbServiceValues), v, true);
-                            }
-                            return (int)convertedValue;
-                            ;
-                        }
-                        else
-                        {
-                            return (int)(OleDbServiceValues)Enum.Parse(typeof(OleDbServiceValues), svalue, true);
-                        }
-                    }
-                }
-                return base.ConvertFrom(context, culture, value);
-            }
-
-            public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType)
-            {
-                // Only know how to convert to the NetworkLibrary enumeration
-                return ((typeof(string) == destinationType) || base.CanConvertTo(context, destinationType));
-            }
-
-            public override object ConvertTo(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value, Type destinationType)
-            {
-                if ((typeof(string) == destinationType) && (null != value) && (typeof(Int32) == value.GetType()))
-                {
-                    return Enum.Format(typeof(OleDbServiceValues), ((OleDbServiceValues)(int)value), "G");
-                }
-                return base.ConvertTo(context, culture, value, destinationType);
-            }
-
-            public override bool GetStandardValuesSupported(ITypeDescriptorContext context)
-            {
-                return true;
-            }
-
-            public override bool GetStandardValuesExclusive(ITypeDescriptorContext context)
-            {
-                return false;
-            }
-
-            public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context)
-            {
-                StandardValuesCollection standardValues = _standardValues;
-                if (null == standardValues)
-                {
-                    Array objValues = Enum.GetValues(typeof(OleDbServiceValues));
-                    Array.Sort(objValues, 0, objValues.Length);
-                    standardValues = new StandardValuesCollection(objValues);
-                    _standardValues = standardValues;
-                }
-                return standardValues;
-            }
-
-            public override bool IsValid(ITypeDescriptorContext context, object value)
-            {
-                return true;
-                //return Enum.IsDefined(type, value);
-            }
-        }
-
-        sealed internal class OleDbConnectionStringBuilderConverter : ExpandableObjectConverter
-        {
-            // converter classes should have public ctor
-            public OleDbConnectionStringBuilderConverter()
-            {
-            }
-
-            override public bool CanConvertTo(ITypeDescriptorContext context, Type destinationType)
-            {
-                if (typeof(System.ComponentModel.Design.Serialization.InstanceDescriptor) == destinationType)
-                {
-                    return true;
-                }
-                return base.CanConvertTo(context, destinationType);
-            }
-
-            override public object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType)
-            {
-                if (destinationType == null)
-                {
-                    throw ADP.ArgumentNull("destinationType");
-                }
-                if (typeof(System.ComponentModel.Design.Serialization.InstanceDescriptor) == destinationType)
-                {
-                    OleDbConnectionStringBuilder obj = (value as OleDbConnectionStringBuilder);
-                    if (null != obj)
-                    {
-                        return ConvertToInstanceDescriptor(obj);
-                    }
-                }
-                return base.ConvertTo(context, culture, value, destinationType);
-            }
-
-            private System.ComponentModel.Design.Serialization.InstanceDescriptor ConvertToInstanceDescriptor(OleDbConnectionStringBuilder options)
-            {
-                Type[] ctorParams = new Type[] { typeof(string) };
-                object[] ctorValues = new object[] { options.ConnectionString };
-                System.Reflection.ConstructorInfo ctor = typeof(OleDbConnectionStringBuilder).GetConstructor(ctorParams);
-                return new System.ComponentModel.Design.Serialization.InstanceDescriptor(ctor, ctorValues);
-            }
-        }
-    }
-}
index b2babda06b8edd4c84c92f1544af1e4d19fed7b6..cab01688d0a1ea08735ff9ed75621613a7263cad 100644 (file)
@@ -21,7 +21,7 @@
     </Compile>
     <Compile Include="AdapterSwitches.cs" />
     <Compile Include="ColumnBinding.cs" />
-    <Compile Include="DBBindings.cs" />
+    <Compile Include="DbBindings.cs" />
     <Compile Include="DbConnectionOptions.cs" />
     <Compile Include="DbConnectionStringCommon.cs" />
     <Compile Include="DbParameterHelper.cs" />