Browse Source

Fixed CoreTable ToDataTable for Nullable fields

Kenric Nugteren 1 day ago
parent
commit
4bd6a3c8d7
1 changed files with 16 additions and 2 deletions
  1. 16 2
      InABox.Core/CoreTable/CoreTable.cs

+ 16 - 2
InABox.Core/CoreTable/CoreTable.cs

@@ -294,15 +294,29 @@ namespace InABox.Core
         
         #endregion
 
+        private static Type ConvertColumnTypeToDataColumnType(Type type)
+        {
+            if (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(Nullable<>))
+            {
+                return type.GenericTypeArguments[0];
+            }
+            else
+            {
+                return type;
+            }
+        }
+
         public DataTable ToDataTable(string name = "", IColumns? additionalColumns = null)
         {
             var result = new DataTable(name);
             foreach (var column in Columns)
-                result.Columns.Add(column.ColumnName.Replace('.', '_'), column.DataType);
+            {
+                result.Columns.Add(column.ColumnName.Replace('.', '_'), ConvertColumnTypeToDataColumnType(column.DataType));
+            }
             if(additionalColumns != null)
             {
                 foreach (var column in additionalColumns)
-                    result.Columns.Add(column.Property.Replace('.', '_'), column.Type);
+                    result.Columns.Add(column.Property.Replace('.', '_'), ConvertColumnTypeToDataColumnType(column.Type));
             }
 
             //result.Columns["ID"].Unique = true;