Пример #1
0
 protected override object GetParameterValue(SqlTypeSystem.SqlType type, object value)
 {
     if (value != null && value.GetType() == typeof(Guid))
     {
         return(((Guid)value).ToByteArray());
     }
     return(base.GetParameterValue(type, value));
 }
Пример #2
0
        public override IProviderType GetBestType(IProviderType typeA, IProviderType typeB)
        {
            SqlTypeSystem.SqlType type = (typeA.ComparePrecedenceTo(typeB) > 0) ? ((SqlTypeSystem.SqlType)typeA) : ((ALinq.SqlClient.SqlTypeSystem.SqlType)typeB);
            if (typeA.IsApplicationType || typeA.IsRuntimeOnlyType)
            {
                return(typeA);
            }
            if (typeB.IsApplicationType || typeB.IsRuntimeOnlyType)
            {
                return(typeB);
            }
            var type2 = (SqlTypeSystem.SqlType)typeA;
            var type3 = (SqlTypeSystem.SqlType)typeB;

            if ((type2.HasPrecisionAndScale && type3.HasPrecisionAndScale) && ((SqlDbType)type.SqlDbType == SqlDbType.Decimal))
            {
                int precision = type2.Precision;
                int scale     = type2.Scale;
                int num3      = type3.Precision;
                int num4      = type3.Scale;
                if (((precision == 0) && (scale == 0)) && ((num3 == 0) && (num4 == 0)))
                {
                    return(SqlTypeSystem.Create((SqlDbType)type.SqlDbType));
                }
                if ((precision == 0) && (scale == 0))
                {
                    return(SqlTypeSystem.Create((SqlDbType)type.SqlDbType, num3, num4));
                }
                if ((num3 == 0) && (num4 == 0))
                {
                    return(SqlTypeSystem.Create((SqlDbType)type.SqlDbType, precision, scale));
                }
                int num5 = Math.Max(precision - scale, num3 - num4);
                int num6 = Math.Max(scale, num4);
                int num7 = Math.Min(num5 + num6, 0x26);
                return(SqlTypeSystem.Create((SqlDbType)type.SqlDbType, num7, num6));
            }
            int?size = null;

            if (type2.Size.HasValue && type3.Size.HasValue)
            {
                int?nullable4 = type3.Size;
                int?nullable5 = type2.Size;
                size = ((nullable4.GetValueOrDefault() > nullable5.GetValueOrDefault()) && (nullable4.HasValue & nullable5.HasValue)) ? type3.Size : type2.Size;
            }
            if ((type3.Size.HasValue && (type3.Size.Value == -1)) || (type2.Size.HasValue && (type2.Size.Value == -1)))
            {
                size = -1;
            }
            return(new SqlTypeSystem.SqlType((SqlDbType)type.SqlDbType, size));
        }