2007-11-15 Atsushi Enomoto <atsushi@ximian.com>
authorAtsushi Eno <atsushieno@gmail.com>
Thu, 15 Nov 2007 20:13:44 +0000 (20:13 -0000)
committerAtsushi Eno <atsushieno@gmail.com>
Thu, 15 Nov 2007 20:13:44 +0000 (20:13 -0000)
* DbProviderFactoriesConfigurationHandler.cs : Create() now takes
  parent DataSet into consideration i.e. it now merges items in
  different configurations. Fixed bug #323708.

svn path=/trunk/mcs/; revision=89701

mcs/class/System.Data/System.Data.Common/ChangeLog
mcs/class/System.Data/System.Data.Common/DbProviderFactoriesConfigurationHandler.cs

index a8c0b25f94b104a585a994a34c696d6b42216dc0..5e4447fd2425e9d0cb3d6dfb35cb8613fe8fd3ae 100644 (file)
@@ -1,3 +1,9 @@
+2007-11-15  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * DbProviderFactoriesConfigurationHandler.cs : Create() now takes
+         parent DataSet into consideration i.e. it now merges items in
+         different configurations. Fixed bug #323708.
+
 2007-10-21  Gert Driesen  <drieseng@users.sourceforge.net>
 
        * DbDataPermissionAttribute.cs: In KeyRestrictionBehavior, reuse
index e04c4fd30870275d81a1859f598e11b626152662..5074b09fc1c09b2f34d49d49f3182ff2e0a666d2 100644 (file)
@@ -54,13 +54,14 @@ namespace System.Data.Common
 
                public virtual object Create (object parent, object configContext, XmlNode section)
                {
-                       DataSet ds = new DataSet (DbProviderFactories.CONFIG_SECTION_NAME);
-                       CreateDataTables (ds, section);
+                       DataSet ds = parent as DataSet ?? CreateDataSet ();
+                       FillDataTables (ds, section);
                        return ds;
                }
 
-               internal virtual void CreateDataTables (DataSet ds, XmlNode section)
+               DataSet CreateDataSet ()
                {
+                       DataSet ds = new DataSet (DbProviderFactories.CONFIG_SECTION_NAME);
                        DataTable dt = ds.Tables.Add (DbProviderFactories.CONFIG_SEC_TABLE_NAME);
                        DataColumn [] columns = new DataColumn [4];
                        columns [0] = new DataColumn ("Name", typeof (string));
@@ -69,7 +70,12 @@ namespace System.Data.Common
                        columns [3] = new DataColumn ("AssemblyQualifiedName", typeof (string));
                        dt.Columns.AddRange (columns);
                        dt.PrimaryKey = new DataColumn [] { columns [2] };
+                       return ds;
+               }
 
+               void FillDataTables (DataSet ds, XmlNode section)
+               {
+                       DataTable dt = ds.Tables [0];
                        foreach (XmlNode node in section.ChildNodes) {
                                if (node.NodeType != XmlNodeType.Element)
                                        continue;