New tests.
[mono.git] / mcs / class / System.Data.Linq / src / DbLinq.SqlServer / SqlServerVendor.cs
index 7c628b9b3c8da2d24a8dbe096297e5287dd634fe..de092b37faddc60644e3093802c5b8b9faebc07c 100644 (file)
@@ -32,26 +32,27 @@ using System.Text;
 using System.Data;\r
 using System.Data.Linq.Mapping;\r
 \r
+using DbLinq.Data.Linq;\r
+using DbLinq.Data.Linq.SqlClient;\r
 using DbLinq.Util;\r
 using DbLinq.Vendor;\r
+\r
 #if MONO_STRICT\r
-using System.Data.Linq.SqlClient;\r
 using DataContext = System.Data.Linq.DataContext;\r
-using ITable = System.Data.Linq.ITable;\r
-using DataLinq = System.Data.Linq;\r
+using DataLinq    = System.Data.Linq;\r
+using ITable      = System.Data.Linq.ITable;\r
+using System.Data.Linq.SqlClient;\r
 #else\r
-using DbLinq.Data.Linq.SqlClient;\r
 using DataContext = DbLinq.Data.Linq.DataContext;\r
-using ITable = DbLinq.Data.Linq.ITable;\r
-using DataLinq = DbLinq.Data.Linq;\r
+using DataLinq    = DbLinq.Data.Linq;\r
+using ITable      = DbLinq.Data.Linq.ITable;\r
+using DbLinq.Data.Linq.SqlClient;\r
 #endif\r
 \r
 namespace DbLinq.SqlServer\r
 {\r
     [Vendor(typeof(SqlServerProvider), typeof(Sql2000Provider), typeof(Sql2005Provider))]\r
-#if MONO_STRICT\r
-    internal\r
-#else\r
+#if !MONO_STRICT\r
     public \r
 #endif\r
     class SqlServerVendor : Vendor.Implementation.Vendor\r
@@ -61,6 +62,13 @@ namespace DbLinq.SqlServer
         protected readonly SqlServerSqlProvider sqlProvider = new SqlServerSqlProvider();\r
         public override ISqlProvider SqlProvider { get { return sqlProvider; } }\r
 \r
+        protected override void AppendServer(StringBuilder connectionString, string host)\r
+        {\r
+            // As per http://www.connectionstrings.com/sql-server, \r
+            // port numbers are separated from host names via comma\r
+            AppendConnectionString(connectionString, ConnectionStringServer, host.Replace(':', ','));\r
+        }\r
+\r
         //NOTE: for Oracle, we want to consider 'Array Binding'\r
         //http://download-west.oracle.com/docs/html/A96160_01/features.htm#1049674\r
 \r
@@ -90,6 +98,11 @@ namespace DbLinq.SqlServer
                 var dc = new DataColumn();\r
                 dc.ColumnName = column.MappedName;\r
                 dc.DataType = column.Member.GetMemberType();\r
+                if (dc.DataType.IsNullable())\r
+                {\r
+                    dc.AllowDBNull  = true;\r
+                    dc.DataType     = dc.DataType.GetNullableType();\r
+                }\r
                 dt.Columns.Add(dc);\r
             }\r
 \r
@@ -104,7 +117,7 @@ namespace DbLinq.SqlServer
                     //if (pair.Value.IsDbGenerated)\r
                     //    continue; //don't assign IDENTITY col\r
                     object value = pair.Member.GetMemberValue(row);\r
-                    dr[pair.MappedName] = value;\r
+                    dr[pair.MappedName] = value ?? DBNull.Value;\r
                 }\r
                 //dr[1\r
                 dt.Rows.Add(dr);\r
@@ -117,14 +130,5 @@ namespace DbLinq.SqlServer
         {\r
             throw new NotImplementedException();\r
         }\r
-\r
-        override protected TypeToLoadData GetProviderTypeName()\r
-        {\r
-            return new TypeToLoadData\r
-            {\r
-                assemblyName = "System.Data.DLL",\r
-                className = "SqlConnection",\r
-            };\r
-        }\r
     }\r
 }
\ No newline at end of file