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)); }
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)); }