예제 #1
0
        public static SqlDbType GetSqlDbType(TypeCodeEx type)
        {
            switch (type)
            {
            case TypeCodeEx.Boolean:
                return(SqlDbType.Bit);

            case TypeCodeEx.Byte:
                return(SqlDbType.TinyInt);

            case TypeCodeEx.Char:
                return(SqlDbType.Char);

            case TypeCodeEx.SmartDate:
            case TypeCodeEx.DateTime:
                return(SqlDbType.DateTime);

            case TypeCodeEx.Decimal:
                return(SqlDbType.Decimal);

            case TypeCodeEx.Double:
                return(SqlDbType.Float);

            case TypeCodeEx.Guid:
                return(SqlDbType.UniqueIdentifier);

            case TypeCodeEx.Int16:
                return(SqlDbType.SmallInt);

            case TypeCodeEx.Int32:
                return(SqlDbType.Int);

            case TypeCodeEx.Int64:
                return(SqlDbType.BigInt);

            case TypeCodeEx.SByte:
                return(SqlDbType.TinyInt);

            case TypeCodeEx.Single:
                return(SqlDbType.Real);

            case TypeCodeEx.String:
                return(SqlDbType.VarChar);

            case TypeCodeEx.UInt16:
                return(SqlDbType.Int);

            case TypeCodeEx.UInt32:
                return(SqlDbType.BigInt);

            case TypeCodeEx.UInt64:
                return(SqlDbType.BigInt);

            case TypeCodeEx.Object:
                return(SqlDbType.Image);

            default:
                return(SqlDbType.VarChar);
            }
        }
예제 #2
0
        public virtual string GetNowValue(TypeCodeEx typeCode)
        {
            var now = "Now";

            if (_currentUnit.Params.LogInUtc)
            {
                now = "UtcNow";
            }

            if (typeCode == TypeCodeEx.SmartDate ||
                typeCode == TypeCodeEx.DateTime)
            {
                return("DateTime." + now);
            }

            if (typeCode == TypeCodeEx.DateTimeOffset)
            {
                return("DateTimeOffset." + now);
            }

            if (typeCode == TypeCodeEx.TimeSpan)
            {
                return("DateTime." + now + ".TimeOfDay");
            }

            return(GetInitValue(typeCode));
        }
예제 #3
0
        public string GetReaderMethod(TypeCodeEx dataType)
        {
            switch (dataType)
            {
            case TypeCodeEx.Byte: return("GetByte");

            case TypeCodeEx.Int16: return("GetInt16");

            case TypeCodeEx.Int32: return("GetInt32");

            case TypeCodeEx.Int64: return("GetInt64");

            case TypeCodeEx.String: return("GetString");

            case TypeCodeEx.Boolean: return("GetBoolean");

            case TypeCodeEx.Guid: return("GetGuid");

            case TypeCodeEx.Decimal: return("GetDecimal");

            case TypeCodeEx.SmartDate: return("GetSmartDate");

            case TypeCodeEx.DateTime: return("GetDateTime");

            case TypeCodeEx.ByteArray: return("GetValue");

            case TypeCodeEx.Single: return("GetFloat");

            case TypeCodeEx.Double: return("GetDouble");

            case TypeCodeEx.Char: return("GetChar");

            default: return("GetValue");
            }
        }
예제 #4
0
        public static bool IsNullAllowedOnType(TypeCodeEx type)
        {
            switch (type)
            {
            case TypeCodeEx.Boolean:
            case TypeCodeEx.Byte:
            case TypeCodeEx.Char:
            case TypeCodeEx.Decimal:
            case TypeCodeEx.Double:
            case TypeCodeEx.Guid:
            case TypeCodeEx.Int16:
            case TypeCodeEx.Int32:
            case TypeCodeEx.Int64:
            case TypeCodeEx.SByte:
            case TypeCodeEx.Single:
            case TypeCodeEx.UInt16:
            case TypeCodeEx.UInt32:
            case TypeCodeEx.UInt64:
            case TypeCodeEx.DateTime:
            case TypeCodeEx.SmartDate:
            case TypeCodeEx.String:
                return(true);

                /*
                 * These are not nullable:
                 * case TypeCodeEx.ByteArray:
                 * case TypeCodeEx.DBNull:
                 * case TypeCodeEx.Empty:
                 * case TypeCodeEx.Object:
                 */
            }
            return(false);
        }
예제 #5
0
 protected void ResetProperties(DbBindColumn dbc)
 {
     if (dbc != null && dbc.Column != null)
     {
         _name          = dbc.ColumnName;
         _parameterName = dbc.ColumnName;
         _propertyType  = Util.TypeHelper.GetTypeCodeEx(dbc.Column.ManagedType);
     }
 }
예제 #6
0
        protected virtual string GetDataType(TypeCodeEx type)
        {
            if (type == TypeCodeEx.ByteArray)
            {
                return("Byte[]");
            }

            return(type.ToString());
        }
        //protected override string GetDataType(TypeCodeEx type) // original
        public override string GetDataType(TypeCodeEx type)
        {
            if (type == TypeCodeEx.ByteArray)
            {
                return("Byte()");
            }

            return(type.ToString());
        }
예제 #8
0
 public virtual string GetInitValue(TypeCodeEx typeCode)
 {
     if (typeCode == TypeCodeEx.Int16 || typeCode == TypeCodeEx.Int32 || typeCode == TypeCodeEx.Int64 || typeCode == TypeCodeEx.Double ||
         typeCode == TypeCodeEx.Decimal || typeCode == TypeCodeEx.Single)
     {
         return("0");
     }
     else if (typeCode == TypeCodeEx.String)
     {
         return("String.Empty");
     }
     else if (typeCode == TypeCodeEx.Boolean)
     {
         return("false");
     }
     else if (typeCode == TypeCodeEx.Byte)
     {
         return("0");
     }
     else if (typeCode == TypeCodeEx.Object)
     {
         return("null");
     }
     else if (typeCode == TypeCodeEx.Guid)
     {
         return("Guid.Empty");
     }
     else if (typeCode == TypeCodeEx.SmartDate)
     {
         return("new SmartDate(true)");
     }
     else if (typeCode == TypeCodeEx.DateTime)
     {
         return("DateTime.Now");
     }
     else if (typeCode == TypeCodeEx.Char)
     {
         return("Char.MinValue");
     }
     else if (typeCode == TypeCodeEx.ByteArray)
     {
         return("new Byte[] {}");
     }
     else
     {
         return(String.Empty);
     }
 }
예제 #9
0
        protected internal string GetReaderMethod(DbType dataType, TypeCodeEx propertyType)
        {
            switch (dataType)
            {
            case DbType.Byte: return("GetByte");

            case DbType.Int16: return("GetInt16");

            case DbType.Int32: return("GetInt32");

            case DbType.Int64: return("GetInt64");

            case DbType.AnsiStringFixedLength: return("GetChar");

            case DbType.AnsiString: return("GetString");

            case DbType.String: return("GetString");

            case DbType.StringFixedLength: return("GetString");

            case DbType.Boolean: return("GetBoolean");

            case DbType.Guid: return("GetGuid");

            case DbType.Currency: return("GetDecimal");

            case DbType.Decimal: return("GetDecimal");

            case DbType.DateTime:
            case DbType.Date: return((propertyType == TypeCodeEx.SmartDate) ? "GetSmartDate" : "GetDateTime");

            case DbType.Binary: return("GetValue");

            case DbType.Single: return("GetFloat");

            case DbType.Double: return("GetDouble");

            default: return("GetValue");
            }
        }
        public static TypeCodeEx[] GetDataColumnTypeCodes(DataTable table)
        {
            TypeCodeEx[] colDbTypeAr = new TypeCodeEx[table.Columns.Count];

            for (int i = 0; i < table.Columns.Count; i++)
            {
                DataColumn dc = table.Columns[i];
                if (dc.DataType == GuidType)
                {
                    colDbTypeAr[i] = TypeCodeEx.Guid;
                }
                else if (dc.DataType == ByteArType)
                {
                    colDbTypeAr[i] = TypeCodeEx.ByteAr;
                }
                else
                {
                    colDbTypeAr[i] = (TypeCodeEx)Type.GetTypeCode(dc.DataType);
                }
            }
            return(colDbTypeAr);
        }
        public static byte[] Serialize(DataTable table)
        {
            TypeCodeEx[] colDbTypeAr = new TypeCodeEx[table.Columns.Count];

            for (int i = 0; i < table.Columns.Count; i++)
            {
                DataColumn dc = table.Columns[i];
                if (dc.DataType == GuidType)
                {
                    colDbTypeAr[i] = TypeCodeEx.Guid;
                }
                else if (dc.DataType == ByteArType)
                {
                    colDbTypeAr[i] = TypeCodeEx.ByteAr;
                }
                else
                {
                    colDbTypeAr[i] = (TypeCodeEx)Type.GetTypeCode(dc.DataType);
                }
            }

            using (MemoryStream memStream = new MemoryStream())
            {
                foreach (DataRow row in table.Rows)
                {
                    if (row.RowState == DataRowState.Deleted)
                    {
                        continue;
                    }

                    BytesFromRow(row, table.Columns, colDbTypeAr, memStream);
                }

                memStream.Flush();
                return(memStream.ToArray());
            }
        }
예제 #12
0
        public static bool IsNumeric(this TypeCodeEx type)
        {
            switch (type)
            {
            case TypeCodeEx.Byte:
            case TypeCodeEx.Decimal:
            case TypeCodeEx.Double:
            case TypeCodeEx.Int16:
            case TypeCodeEx.Int32:
            case TypeCodeEx.Int64:
            case TypeCodeEx.SByte:
            case TypeCodeEx.Single:
            case TypeCodeEx.UInt16:
            case TypeCodeEx.UInt32:
            case TypeCodeEx.UInt64:
                return(true);

                /*
                 * These are not numeric:
                 * case TypeCodeEx.Boolean:
                 * case TypeCodeEx.ByteArray:
                 * case TypeCodeEx.Char:
                 * case TypeCodeEx.CustomType:
                 * case TypeCodeEx.DBNull:
                 * case TypeCodeEx.Empty:
                 * case TypeCodeEx.Guid:
                 * case TypeCodeEx.Object:
                 * case TypeCodeEx.TimeSpan:
                 * case TypeCodeEx.DateTimeOffset:
                 * case TypeCodeEx.DateTime:
                 * case TypeCodeEx.SmartDate:
                 * case TypeCodeEx.String:
                 */
            }
            return(false);
        }
예제 #13
0
        //protected virtual string GetDataType(TypeCodeEx type) // original
        public virtual string GetDataType(TypeCodeEx type)
        {
            if (type == TypeCodeEx.ByteArray)
            {
                return("Byte[]");
            }

            if (type == TypeCodeEx.String)
            {
                return("string");
            }

            if (type == TypeCodeEx.Int32)
            {
                return("int");
            }

            if (type == TypeCodeEx.Boolean)
            {
                return("bool");
            }

            return(type.ToString());
        }
예제 #14
0
 public Property(string name, TypeCodeEx type)
 {
     _name         = name;
     _propertyType = type;
 }
예제 #15
0
 public CriteriaProperty(string name, TypeCodeEx type, string parameterName)
     : base(name, type, parameterName)
 {
 }
예제 #16
0
 public CriteriaProperty(string name, TypeCodeEx type)
     : base(name, type)
 {
 }
예제 #17
0
        public virtual string GetInitValue(TypeCodeEx typeCode)
        {
            if (typeCode == TypeCodeEx.Byte ||
                typeCode == TypeCodeEx.Int16 ||
                typeCode == TypeCodeEx.Int32 ||
                typeCode == TypeCodeEx.Int64 ||
                typeCode == TypeCodeEx.Double ||
                typeCode == TypeCodeEx.Decimal ||
                typeCode == TypeCodeEx.Single)
            {
                return("0");
            }

            if (typeCode == TypeCodeEx.String)
            {
                return("string.Empty");
            }

            if (typeCode == TypeCodeEx.Boolean)
            {
                return("false");
            }

            if (typeCode == TypeCodeEx.Object)
            {
                return("null");
            }

            if (typeCode == TypeCodeEx.Guid)
            {
                return("Guid.Empty");
            }

            if (typeCode == TypeCodeEx.SmartDate)
            {
                return("new SmartDate(true)");
            }

            if (typeCode == TypeCodeEx.DateTime)
            {
                return(GetNowValue(typeCode));
            }

            if (typeCode == TypeCodeEx.DateTimeOffset)
            {
                return(GetNowValue(typeCode));
            }

            if (typeCode == TypeCodeEx.TimeSpan)
            {
                return(GetNowValue(typeCode));
            }

            if (typeCode == TypeCodeEx.Char)
            {
                return("char.MinValue");
            }

            if (typeCode == TypeCodeEx.ByteArray)
            {
                return("new byte[] {}");
            }

            return(string.Empty);
        }
        public static void BytesFromRow(DataRow row, DataColumnCollection columns, TypeCodeEx[] colDbTypeAr, MemoryStream memStream)
        {
            for (int i = 0; i < columns.Count; i++)
            {
                DataColumn dc      = columns[i];
                object     cellVal = row[dc];

                TypeCodeEx typeCodeEx = colDbTypeAr[i];

                if (cellVal == dc.DefaultValue)
                {
                    typeCodeEx = TypeCodeEx.Empty;
                }
                else if (cellVal == null ||
                         DBNull.Value.Equals(cellVal))
                {
                    typeCodeEx = TypeCodeEx.DBNull;
                }

                Byte[] cellBytes = null;

                switch (typeCodeEx)
                {
                case TypeCodeEx.Empty:
                case TypeCodeEx.Object:
                    memStream.WriteByte((byte)DataHeader.DefaultValue);
                    break;

                case TypeCodeEx.DBNull:
                    memStream.WriteByte((byte)DataHeader.DbNull);
                    break;

                case TypeCodeEx.Boolean:
                    memStream.WriteByte((byte)DataHeader.FixedLenValue);
                    cellBytes = BitConverter.GetBytes((bool)cellVal);
                    memStream.Write(cellBytes, 0, cellBytes.Length);
                    break;

                case TypeCodeEx.Char:
                    memStream.WriteByte((byte)DataHeader.FixedLenValue);
                    cellBytes = BitConverter.GetBytes((char)cellVal);
                    memStream.Write(cellBytes, 0, cellBytes.Length);
                    break;

                case TypeCodeEx.SByte:
                case TypeCodeEx.Byte:
                    memStream.WriteByte((byte)DataHeader.FixedLenValue);
                    memStream.WriteByte((byte)cellVal);
                    break;

                case TypeCodeEx.Int16:
                case TypeCodeEx.UInt16:
                    memStream.WriteByte((byte)DataHeader.FixedLenValue);
                    cellBytes = BitConverter.GetBytes((Int16)cellVal);
                    memStream.Write(cellBytes, 0, cellBytes.Length);
                    break;

                case TypeCodeEx.Int32:
                case TypeCodeEx.UInt32:
                    memStream.WriteByte((byte)DataHeader.FixedLenValue);
                    cellBytes = BitConverter.GetBytes((Int32)cellVal);
                    memStream.Write(cellBytes, 0, cellBytes.Length);
                    break;

                case TypeCodeEx.Int64:
                case TypeCodeEx.UInt64:
                    memStream.WriteByte((byte)DataHeader.FixedLenValue);
                    cellBytes = BitConverter.GetBytes((Int64)cellVal);
                    memStream.Write(cellBytes, 0, cellBytes.Length);
                    break;

                case TypeCodeEx.Single:
                    memStream.WriteByte((byte)DataHeader.FixedLenValue);
                    cellBytes = BitConverter.GetBytes((float)cellVal);
                    memStream.Write(cellBytes, 0, cellBytes.Length);
                    break;

                case TypeCodeEx.Double:
                    memStream.WriteByte((byte)DataHeader.FixedLenValue);
                    cellBytes = BitConverter.GetBytes((double)cellVal);
                    memStream.Write(cellBytes, 0, cellBytes.Length);
                    break;

                case TypeCodeEx.Decimal:
                {
                    memStream.WriteByte((byte)DataHeader.FixedLenValue);
                    int[] intAr = Decimal.GetBits((Decimal)cellVal);
                    foreach (int decPart in intAr)
                    {
                        cellBytes = BitConverter.GetBytes(decPart);
                        memStream.Write(cellBytes, 0, cellBytes.Length);
                    }
                }
                break;

                case TypeCodeEx.DateTime:
                    memStream.WriteByte((byte)DataHeader.FixedLenValue);
                    cellBytes = BitConverter.GetBytes(((DateTime)cellVal).Ticks);
                    memStream.Write(cellBytes, 0, cellBytes.Length);
                    break;

                case TypeCodeEx.String:
                {
                    DBConverter.ToMemoryStream(memStream, (string)cellVal);
                }
                break;

                case TypeCodeEx.Guid:
                    memStream.WriteByte((byte)DataHeader.FixedLenValue);
                    cellBytes = ((Guid)cellVal).ToByteArray();
                    memStream.Write(cellBytes, 0, cellBytes.Length);
                    break;

                case TypeCodeEx.ByteAr:
                {
                    memStream.WriteByte((byte)DataHeader.VariableLenValue);
                    cellBytes = (byte[])cellVal;
                    Byte[] lengthBytes = BitConverter.GetBytes(cellBytes.Length);
                    memStream.Write(lengthBytes, 0, lengthBytes.Length);
                    memStream.Write(cellBytes, 0, cellBytes.Length);
                }
                break;
                }
            }            //foreach column
        }
예제 #19
0
        public static DbType GetDbType(TypeCodeEx type)
        {
            switch (type)
            {
            case TypeCodeEx.Boolean:
                return(DbType.Boolean);

            case TypeCodeEx.Byte:
                return(DbType.Byte);

            case TypeCodeEx.ByteArray:
                return(DbType.Binary);

            case TypeCodeEx.Char:
                return(DbType.StringFixedLength);

            case TypeCodeEx.SmartDate:
            case TypeCodeEx.DateTime:
                return(DbType.DateTime);

            case TypeCodeEx.Decimal:
                return(DbType.Decimal);

            case TypeCodeEx.Double:
                return(DbType.Double);

            case TypeCodeEx.Guid:
                return(DbType.Guid);

            case TypeCodeEx.Int16:
                return(DbType.Int16);

            case TypeCodeEx.Int32:
                return(DbType.Int32);

            case TypeCodeEx.Int64:
                return(DbType.Int64);

            case TypeCodeEx.SByte:
                return(DbType.SByte);

            case TypeCodeEx.Single:
                return(DbType.Single);

            case TypeCodeEx.String:
                return(DbType.String);

            case TypeCodeEx.UInt16:
                return(DbType.UInt16);

            case TypeCodeEx.UInt32:
                return(DbType.UInt32);

            case TypeCodeEx.UInt64:
                return(DbType.UInt64);

            case TypeCodeEx.Object:
                return(DbType.Binary);

            default:
                return(DbType.String);
            }
        }
        public static void RowFromBytes(DataRow newRow, DataColumnCollection columns, TypeCodeEx[] colDbTypeAr, MemoryStream memStream)
        {
            byte[] fixedLenBuffer = new byte[16];
            byte[] stringBuffer   = null;

            for (int i = 0; i < columns.Count; i++)
            {
                DataColumn dc         = columns[i];
                TypeCodeEx typeCodeEx = colDbTypeAr[i];

                DataHeader header = (DataHeader)memStream.ReadByte();
                switch (header)
                {
                case DataHeader.DbNull:
                    if (dc.DefaultValue == null)
                    {
                        continue;
                    }
                    newRow[dc] = DBNull.Value;
                    continue;

                case DataHeader.DefaultValue:
                    continue;
                }

                switch (typeCodeEx)
                {
                case TypeCodeEx.Boolean:
                    memStream.Read(fixedLenBuffer, 0, 1);
                    newRow[dc] = BitConverter.ToBoolean(fixedLenBuffer, 0);
                    break;

                case TypeCodeEx.Char:
                    memStream.Read(fixedLenBuffer, 0, 2);
                    newRow[dc] = BitConverter.ToChar(fixedLenBuffer, 0);
                    break;

                case TypeCodeEx.SByte:
                    memStream.Read(fixedLenBuffer, 0, 1);
                    newRow[dc] = (sbyte)fixedLenBuffer[0];
                    break;

                case TypeCodeEx.Byte:
                    memStream.Read(fixedLenBuffer, 0, 1);
                    newRow[dc] = (Byte)fixedLenBuffer[0];
                    break;

                case TypeCodeEx.Int16:
                    memStream.Read(fixedLenBuffer, 0, 2);
                    newRow[dc] = BitConverter.ToInt16(fixedLenBuffer, 0);
                    break;

                case TypeCodeEx.UInt16:
                    memStream.Read(fixedLenBuffer, 0, 2);
                    newRow[dc] = BitConverter.ToUInt16(fixedLenBuffer, 0);
                    break;

                case TypeCodeEx.Int32:
                    memStream.Read(fixedLenBuffer, 0, 4);
                    newRow[dc] = BitConverter.ToInt32(fixedLenBuffer, 0);
                    break;

                case TypeCodeEx.UInt32:
                    memStream.Read(fixedLenBuffer, 0, 4);
                    newRow[dc] = BitConverter.ToUInt32(fixedLenBuffer, 0);
                    break;

                case TypeCodeEx.Int64:
                    memStream.Read(fixedLenBuffer, 0, 8);
                    newRow[dc] = BitConverter.ToInt64(fixedLenBuffer, 0);
                    break;

                case TypeCodeEx.UInt64:
                    memStream.Read(fixedLenBuffer, 0, 8);
                    newRow[dc] = BitConverter.ToUInt64(fixedLenBuffer, 0);
                    break;

                case TypeCodeEx.Single:
                    memStream.Read(fixedLenBuffer, 0, 4);
                    newRow[dc] = BitConverter.ToSingle(fixedLenBuffer, 0);
                    break;

                case TypeCodeEx.Double:
                    memStream.Read(fixedLenBuffer, 0, 8);
                    newRow[dc] = BitConverter.ToDouble(fixedLenBuffer, 0);
                    break;

                case TypeCodeEx.Decimal:
                {
                    int[] intAr = new int[4];
                    memStream.Read(fixedLenBuffer, 0, 8);
                    intAr[0] = BitConverter.ToInt32(fixedLenBuffer, 0);
                    intAr[1] = BitConverter.ToInt32(fixedLenBuffer, 4);
                    memStream.Read(fixedLenBuffer, 0, 8);
                    intAr[2] = BitConverter.ToInt32(fixedLenBuffer, 0);
                    intAr[3] = BitConverter.ToInt32(fixedLenBuffer, 4);

                    newRow[dc] = new decimal(intAr);
                }
                break;

                case TypeCodeEx.DateTime:
                    memStream.Read(fixedLenBuffer, 0, 8);
                    newRow[dc] = new DateTime(BitConverter.ToInt64(fixedLenBuffer, 0));
                    break;

                case TypeCodeEx.String:
                {
                    memStream.Read(fixedLenBuffer, 0, 4);
                    int length = BitConverter.ToInt32(fixedLenBuffer, 0);
                    if (stringBuffer == null ||
                        stringBuffer.Length < length)
                    {
                        stringBuffer = new byte[length];
                    }

                    int offset = 0;
                    do
                    {
                        offset += memStream.Read(stringBuffer, offset, length);
                    } while(offset < length);
                    newRow[dc] = Encoding.Unicode.GetString(stringBuffer, 0, length);
                }
                break;

                case TypeCodeEx.Guid:
                    memStream.Read(fixedLenBuffer, 0, 16);
                    newRow[dc] = new Guid(fixedLenBuffer);
                    break;

                case TypeCodeEx.ByteAr:
                {
                    memStream.Read(fixedLenBuffer, 0, 4);
                    int length = BitConverter.ToInt32(fixedLenBuffer, 0);
                    if (stringBuffer == null ||
                        stringBuffer.Length < length)
                    {
                        stringBuffer = new byte[length];
                    }

                    int offset = 0;
                    do
                    {
                        offset += memStream.Read(stringBuffer, offset, length);
                    } while(offset < length);

                    Byte[] byteArVal = new byte[length];
                    Buffer.BlockCopy(stringBuffer, 0, byteArVal, 0, length);
                    newRow[dc] = byteArVal;
                }
                break;
                }
            }            //foreach column
        }
예제 #21
0
 public Property(string name, TypeCodeEx type, string parameterName)
 {
     _name          = name;
     _propertyType  = type;
     _parameterName = parameterName;
 }