Currently it is impossible to use the DbLinqProvider  and
DbLinqConnectionType connection parameters with PostgreSQL because
Npgsql does not like extra aguments. The attached patch fixes this.

Ok to commit?

federico

-- 
Federico Di Gregorio                         http://people.initd.org/fog
Debian GNU/Linux Developer                                f...@debian.org
INIT.D Developer                                           f...@initd.org
                           Don't dream it. Be it. -- Dr. Frank'n'further
Index: class/System.Data.Linq/ChangeLog
===================================================================
--- class/System.Data.Linq/ChangeLog	(revisione 135969)
+++ class/System.Data.Linq/ChangeLog	(copia locale)
@@ -1,3 +1,10 @@
+2009-06-12  Federico Di Gregorio <f...@initd.org>
+
+	* src/DbLinq/Vendor/Implementation/Vendor.cs: moved all connection
+	  string cleaning code into Vendor.CreateDbConnection() to make sure
+	  that drivers that don't like extra arguments in the string (Npgsql)
+	  work correctly.
+
 2009-05-14  Jonathan Pryor  <jpr...@novell.com>
 
 	* src/DbLinq/Data/Linq/Sugar/Implementation/QueryCache.cs: Temporarily
Index: class/System.Data.Linq/src/DbLinq/Vendor/Implementation/Vendor.cs
===================================================================
--- class/System.Data.Linq/src/DbLinq/Vendor/Implementation/Vendor.cs	(revisione 135969)
+++ class/System.Data.Linq/src/DbLinq/Vendor/Implementation/Vendor.cs	(copia locale)
@@ -167,6 +167,7 @@
         public IDbConnection CreateDbConnection(string connectionString)
         {
             var reConnectionType = new System.Text.RegularExpressions.Regex(@"DbLinqConnectionType=([^;]*)");
+            var reClean = new System.Text.RegularExpressions.Regex(@"(DbLinqProvider|DbLinqConnectionType)=[^;]+;?");
             string connTypeVal = null;
             if (!reConnectionType.IsMatch(connectionString))
             {
@@ -176,7 +177,7 @@
             {
                 var    match        = reConnectionType.Match(connectionString);
                 connTypeVal         = match.Groups[1].Value;
-                connectionString    = reConnectionType.Replace(connectionString, "");
+                connectionString    = reClean.Replace(connectionString, "");
             }
 
             var    connType     = Type.GetType(connTypeVal);
Index: class/System.Data.Linq/src/DbLinq/Data/Linq/DataContext.cs
===================================================================
--- class/System.Data.Linq/src/DbLinq/Data/Linq/DataContext.cs	(revisione 135969)
+++ class/System.Data.Linq/src/DbLinq/Data/Linq/DataContext.cs	(copia locale)
@@ -183,7 +183,6 @@
 
             IDbConnection dbConnection = ivendor.CreateDbConnection(connectionString);
             Init(new DatabaseContext(dbConnection), null, ivendor);
-
         }
 
         private IVendor GetVendor(string connectionString)
@@ -239,9 +238,6 @@
                     //already fully qualified DLL name?
                     throw new ArgumentException("Please provide a short name, such as 'MySql', not '" + vendor + "'");
                 }
-
-                //shorten: "DbLinqProvider=X;Server=Y" -> ";Server=Y"
-                connectionString = reProvider.Replace(connectionString, "");
             }
 
             typeName = vendor + "Vendor";

Attachment: signature.asc
Description: Questa รจ una parte del messaggio firmata digitalmente

_______________________________________________
Mono-devel-list mailing list
Mono-devel-list@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-devel-list

Reply via email to