internal static SQLDataType ToSQLDataType(this CLRDataType clrDataType)
        {
            switch (clrDataType)
            {
            case CLRDataType.Int16: return(SQLDataType.SMALLINT);

            case CLRDataType.Int32: return(SQLDataType.INT);

            case CLRDataType.Int64: return(SQLDataType.BIGINT);

            case CLRDataType.Single: return(SQLDataType.SINGLE);

            case CLRDataType.Double: return(SQLDataType.DOUBLE);

            case CLRDataType.Decimal: return(SQLDataType.DECIMAL);

            case CLRDataType.Byte: return(SQLDataType.TINYINT);

            case CLRDataType.String: return(SQLDataType.TEXT);

            case CLRDataType.Boolean: return(SQLDataType.BOOLEAN);

            case CLRDataType.DateTime: return(SQLDataType.DATETIME);

            default: return(SQLDataType.Unsupported);
            }
        }
 /// <summary>
 /// From SQL
 /// </summary>
 public CLRProperty(string name, CLRDataType typeCode)
 {
     Name = name;
     Type = typeCode;
     Get  = obj =>
     {
         if (obj is IDynamicMemberValueProvider dm && dm.TryGetValue(Name, out var value, out var actualKey))
         {
             Name = actualKey;
             return(value);
         }
         return(null);
     };
     Set        = (obj, value) => (obj as IDynamicMemberValueProvider)?.TrySetValue(Name, value);
     IsDeclared = false;
 }