You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
93 lines
2.8 KiB
93 lines
2.8 KiB
using System;
|
|
using System.Data;
|
|
using System.Linq;
|
|
using System.Reflection;
|
|
using System.Text.RegularExpressions;
|
|
|
|
namespace SqlSugar
|
|
{
|
|
public class UtilMethods
|
|
{
|
|
internal static Type GetUnderType(Type oldType)
|
|
{
|
|
var type = Nullable.GetUnderlyingType(oldType);
|
|
return type==null ? oldType : type;
|
|
}
|
|
|
|
internal static Type GetUnderType(PropertyInfo propertyInfo, ref bool isNullable)
|
|
{
|
|
var unType = Nullable.GetUnderlyingType(propertyInfo.PropertyType);
|
|
isNullable = unType != null;
|
|
unType = unType ?? propertyInfo.PropertyType;
|
|
return unType;
|
|
}
|
|
|
|
internal static Type GetUnderType(PropertyInfo propertyInfo)
|
|
{
|
|
var unType = Nullable.GetUnderlyingType(propertyInfo.PropertyType);
|
|
unType = unType ?? propertyInfo.PropertyType;
|
|
return unType;
|
|
}
|
|
|
|
internal static bool IsNullable(PropertyInfo propertyInfo)
|
|
{
|
|
var unType = Nullable.GetUnderlyingType(propertyInfo.PropertyType);
|
|
return unType != null;
|
|
}
|
|
|
|
internal static T IsNullReturnNew<T>(T returnObj) where T : new()
|
|
{
|
|
if (returnObj.IsNullOrEmpty())
|
|
{
|
|
returnObj = new T();
|
|
}
|
|
return returnObj;
|
|
}
|
|
|
|
internal static T ChangeType<T>(T obj, Type type)
|
|
{
|
|
return (T)Convert.ChangeType(obj, type);
|
|
}
|
|
|
|
internal static T ChangeType<T>(T obj)
|
|
{
|
|
return (T)Convert.ChangeType(obj, typeof(T));
|
|
}
|
|
|
|
internal static void RepairReplicationParameters(ref string appendSql, SugarParameter[] parameters, int addIndex)
|
|
{
|
|
if (appendSql.HasValue() && parameters.HasValue())
|
|
{
|
|
foreach (var parameter in parameters.OrderByDescending(it => it.ParameterName.Length))
|
|
{
|
|
//Compatible with.NET CORE parameters case
|
|
var name = parameter.ParameterName;
|
|
var newName = name + addIndex;
|
|
appendSql = appendSql.Replace(name, newName);
|
|
parameter.ParameterName = newName;
|
|
}
|
|
}
|
|
}
|
|
|
|
internal static string GetPackTable(string sql, string shortName)
|
|
{
|
|
return string.Format(" ({0}) {1} ", sql, shortName);
|
|
}
|
|
|
|
internal static string GetParenthesesValue(string dbTypeName)
|
|
{
|
|
if (Regex.IsMatch(dbTypeName, @"\(.+\)"))
|
|
{
|
|
dbTypeName = Regex.Replace(dbTypeName, @"\(.+\)", "");
|
|
}
|
|
dbTypeName = dbTypeName.Trim();
|
|
return dbTypeName;
|
|
}
|
|
|
|
internal static T GetOldValue<T>(T value, Action action)
|
|
{
|
|
action?.Invoke();
|
|
return value;
|
|
}
|
|
}
|
|
}
|