mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-09-23 04:23:47 +08:00
Update SqlSugar.Access
This commit is contained in:
64
Src/Asp.Net/SqlSugar.Access/Tools/ErrorMessage.cs
Normal file
64
Src/Asp.Net/SqlSugar.Access/Tools/ErrorMessage.cs
Normal file
@@ -0,0 +1,64 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
namespace SqlSugar.Access
|
||||
{
|
||||
internal static partial class ErrorMessage
|
||||
{
|
||||
internal static LanguageType SugarLanguageType { get; set; } = LanguageType.Default;
|
||||
internal static string ObjNotExist
|
||||
{
|
||||
get
|
||||
{
|
||||
return GetThrowMessage("{0} does not exist.",
|
||||
"{0}不存在。");
|
||||
}
|
||||
}
|
||||
internal static string EntityMappingError
|
||||
{
|
||||
get
|
||||
{
|
||||
return GetThrowMessage("Entity mapping error.{0}",
|
||||
"实体与表映射出错。{0}");
|
||||
}
|
||||
}
|
||||
|
||||
public static string NotSupportedDictionary
|
||||
{
|
||||
get
|
||||
{
|
||||
return GetThrowMessage("This type of Dictionary is not supported for the time being. You can try Dictionary<string, string>, or contact the author!!",
|
||||
"暂时不支持该类型的Dictionary 你可以试试 Dictionary<string ,string>或者联系作者!!");
|
||||
}
|
||||
}
|
||||
|
||||
public static string NotSupportedArray
|
||||
{
|
||||
get
|
||||
{
|
||||
return GetThrowMessage("This type of Array is not supported for the time being. You can try object[] or contact the author!!",
|
||||
"暂时不支持该类型的Array 你可以试试 object[] 或者联系作者!!");
|
||||
}
|
||||
}
|
||||
|
||||
internal static string GetThrowMessage(string enMessage, string cnMessage, params string[] args)
|
||||
{
|
||||
if (SugarLanguageType == LanguageType.Default)
|
||||
{
|
||||
List<string> formatArgs = new List<string>() { enMessage, cnMessage };
|
||||
formatArgs.AddRange(args);
|
||||
return string.Format(@"中文提示 : {1}
|
||||
English Message : {0}", formatArgs.ToArray());
|
||||
}
|
||||
else if (SugarLanguageType == LanguageType.English)
|
||||
{
|
||||
return enMessage;
|
||||
}
|
||||
else
|
||||
{
|
||||
return cnMessage;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
70
Src/Asp.Net/SqlSugar.Access/Tools/FileHelper.cs
Normal file
70
Src/Asp.Net/SqlSugar.Access/Tools/FileHelper.cs
Normal file
@@ -0,0 +1,70 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace SqlSugar.Access
|
||||
{
|
||||
internal class FileHelper
|
||||
{
|
||||
public static void CreateFile(string filePath, string text, Encoding encoding)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (IsExistFile(filePath))
|
||||
{
|
||||
DeleteFile(filePath);
|
||||
}
|
||||
if (!IsExistFile(filePath))
|
||||
{
|
||||
string directoryPath = GetDirectoryFromFilePath(filePath);
|
||||
CreateDirectory(directoryPath);
|
||||
|
||||
//Create File
|
||||
FileInfo file = new FileInfo(filePath);
|
||||
using (FileStream stream = file.Create())
|
||||
{
|
||||
using (StreamWriter writer = new StreamWriter(stream, encoding))
|
||||
{
|
||||
writer.Write(text);
|
||||
writer.Flush();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch(Exception ex)
|
||||
{
|
||||
throw ex;
|
||||
}
|
||||
}
|
||||
public static bool IsExistDirectory(string directoryPath)
|
||||
{
|
||||
return Directory.Exists(directoryPath);
|
||||
}
|
||||
public static void CreateDirectory(string directoryPath)
|
||||
{
|
||||
if (!IsExistDirectory(directoryPath))
|
||||
{
|
||||
Directory.CreateDirectory(directoryPath);
|
||||
}
|
||||
}
|
||||
public static void DeleteFile(string filePath)
|
||||
{
|
||||
if (IsExistFile(filePath))
|
||||
{
|
||||
File.Delete(filePath);
|
||||
}
|
||||
}
|
||||
public static string GetDirectoryFromFilePath(string filePath)
|
||||
{
|
||||
FileInfo file = new FileInfo(filePath);
|
||||
DirectoryInfo directory = file.Directory;
|
||||
return directory.FullName;
|
||||
}
|
||||
public static bool IsExistFile(string filePath)
|
||||
{
|
||||
return File.Exists(filePath);
|
||||
}
|
||||
}
|
||||
}
|
73
Src/Asp.Net/SqlSugar.Access/Tools/UtilConstants.cs
Normal file
73
Src/Asp.Net/SqlSugar.Access/Tools/UtilConstants.cs
Normal file
@@ -0,0 +1,73 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Dynamic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
namespace SqlSugar.Access
|
||||
{
|
||||
internal static class UtilConstants
|
||||
{
|
||||
public const string Dot = ".";
|
||||
public const char DotChar = '.';
|
||||
internal const string Space = " ";
|
||||
internal const char SpaceChar =' ';
|
||||
internal const string AssemblyName = "SqlSugar";
|
||||
internal const string ReplaceKey = "{662E689B-17A1-4D06-9D27-F29EAB8BC3D6}";
|
||||
internal const string ReplaceCommaKey = "{112A689B-17A1-4A06-9D27-A39EAB8BC3D5}";
|
||||
|
||||
internal static Type IntType = typeof(int);
|
||||
internal static Type LongType = typeof(long);
|
||||
internal static Type GuidType = typeof(Guid);
|
||||
internal static Type BoolType = typeof(bool);
|
||||
internal static Type BoolTypeNull = typeof(bool?);
|
||||
internal static Type ByteType = typeof(Byte);
|
||||
internal static Type ObjType = typeof(object);
|
||||
internal static Type DobType = typeof(double);
|
||||
internal static Type FloatType = typeof(float);
|
||||
internal static Type ShortType = typeof(short);
|
||||
internal static Type DecType = typeof(decimal);
|
||||
internal static Type StringType = typeof(string);
|
||||
internal static Type DateType = typeof(DateTime);
|
||||
internal static Type DateTimeOffsetType = typeof(DateTimeOffset);
|
||||
internal static Type TimeSpanType = typeof(TimeSpan);
|
||||
internal static Type ByteArrayType = typeof(byte[]);
|
||||
internal static Type ModelType= typeof(ModelContext);
|
||||
internal static Type DynamicType = typeof(ExpandoObject);
|
||||
internal static Type Dicii = typeof(KeyValuePair<int, int>);
|
||||
internal static Type DicIS = typeof(KeyValuePair<int, string>);
|
||||
internal static Type DicSi = typeof(KeyValuePair<string, int>);
|
||||
internal static Type DicSS = typeof(KeyValuePair<string, string>);
|
||||
internal static Type DicOO = typeof(KeyValuePair<object, object>);
|
||||
internal static Type DicSo = typeof(KeyValuePair<string, object>);
|
||||
internal static Type DicArraySS = typeof(Dictionary<string, string>);
|
||||
internal static Type DicArraySO = typeof(Dictionary<string, object>);
|
||||
|
||||
public static Type SugarType = typeof(SqlSugarProvider);
|
||||
|
||||
|
||||
internal static Type[] NumericalTypes = new Type[]
|
||||
{
|
||||
typeof(int),
|
||||
typeof(uint),
|
||||
typeof(byte),
|
||||
typeof(sbyte),
|
||||
typeof(long),
|
||||
typeof(ulong),
|
||||
typeof(short),
|
||||
typeof(ushort),
|
||||
};
|
||||
|
||||
|
||||
internal static string[] DateTypeStringList = new string[]
|
||||
{
|
||||
"Year",
|
||||
"Month",
|
||||
"Day",
|
||||
"Hour",
|
||||
"Second" ,
|
||||
"Minute",
|
||||
"Millisecond",
|
||||
"Date"
|
||||
};
|
||||
}
|
||||
}
|
135
Src/Asp.Net/SqlSugar.Access/Tools/UtilExtensions.cs
Normal file
135
Src/Asp.Net/SqlSugar.Access/Tools/UtilExtensions.cs
Normal file
@@ -0,0 +1,135 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
namespace SqlSugar.Access
|
||||
{
|
||||
/// <summary>
|
||||
///Common Extensions for external users
|
||||
/// </summary>
|
||||
public static class UtilExtensions
|
||||
{
|
||||
|
||||
public static bool EqualCase(this string thisValue, string equalValue)
|
||||
{
|
||||
if (thisValue != null && equalValue != null)
|
||||
{
|
||||
return thisValue.ToLower() == equalValue.ToLower();
|
||||
}
|
||||
else
|
||||
{
|
||||
return thisValue == equalValue;
|
||||
}
|
||||
}
|
||||
public static int ObjToInt(this object thisValue)
|
||||
{
|
||||
int reval = 0;
|
||||
if (thisValue == null) return 0;
|
||||
if (thisValue is Enum)
|
||||
{
|
||||
return (int)thisValue;
|
||||
}
|
||||
if (thisValue != null && thisValue != DBNull.Value && int.TryParse(thisValue.ToString(), out reval))
|
||||
{
|
||||
return reval;
|
||||
}
|
||||
return reval;
|
||||
}
|
||||
|
||||
public static int ObjToInt(this object thisValue, int errorValue)
|
||||
{
|
||||
int reval = 0;
|
||||
if (thisValue is Enum)
|
||||
{
|
||||
return (int)thisValue;
|
||||
}
|
||||
if (thisValue != null && thisValue != DBNull.Value && int.TryParse(thisValue.ToString(), out reval))
|
||||
{
|
||||
return reval;
|
||||
}
|
||||
return errorValue;
|
||||
}
|
||||
|
||||
public static double ObjToMoney(this object thisValue)
|
||||
{
|
||||
double reval = 0;
|
||||
if (thisValue != null && thisValue != DBNull.Value && double.TryParse(thisValue.ToString(), out reval))
|
||||
{
|
||||
return reval;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
public static double ObjToMoney(this object thisValue, double errorValue)
|
||||
{
|
||||
double reval = 0;
|
||||
if (thisValue != null && thisValue != DBNull.Value && double.TryParse(thisValue.ToString(), out reval))
|
||||
{
|
||||
return reval;
|
||||
}
|
||||
return errorValue;
|
||||
}
|
||||
|
||||
public static string ObjToString(this object thisValue)
|
||||
{
|
||||
if (thisValue != null) return thisValue.ToString().Trim();
|
||||
return "";
|
||||
}
|
||||
|
||||
public static string ObjToString(this object thisValue, string errorValue)
|
||||
{
|
||||
if (thisValue != null) return thisValue.ToString().Trim();
|
||||
return errorValue;
|
||||
}
|
||||
|
||||
public static Decimal ObjToDecimal(this object thisValue)
|
||||
{
|
||||
Decimal reval = 0;
|
||||
if (thisValue != null && thisValue != DBNull.Value && decimal.TryParse(thisValue.ToString(), out reval))
|
||||
{
|
||||
return reval;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
public static Decimal ObjToDecimal(this object thisValue, decimal errorValue)
|
||||
{
|
||||
Decimal reval = 0;
|
||||
if (thisValue != null && thisValue != DBNull.Value && decimal.TryParse(thisValue.ToString(), out reval))
|
||||
{
|
||||
return reval;
|
||||
}
|
||||
return errorValue;
|
||||
}
|
||||
|
||||
public static DateTime ObjToDate(this object thisValue)
|
||||
{
|
||||
DateTime reval = DateTime.MinValue;
|
||||
if (thisValue != null && thisValue != DBNull.Value && DateTime.TryParse(thisValue.ToString(), out reval))
|
||||
{
|
||||
reval = Convert.ToDateTime(thisValue);
|
||||
}
|
||||
return reval;
|
||||
}
|
||||
|
||||
public static DateTime ObjToDate(this object thisValue, DateTime errorValue)
|
||||
{
|
||||
DateTime reval = DateTime.MinValue;
|
||||
if (thisValue != null && thisValue != DBNull.Value && DateTime.TryParse(thisValue.ToString(), out reval))
|
||||
{
|
||||
return reval;
|
||||
}
|
||||
return errorValue;
|
||||
}
|
||||
|
||||
public static bool ObjToBool(this object thisValue)
|
||||
{
|
||||
bool reval = false;
|
||||
if (thisValue != null && thisValue != DBNull.Value && bool.TryParse(thisValue.ToString(), out reval))
|
||||
{
|
||||
return reval;
|
||||
}
|
||||
return reval;
|
||||
}
|
||||
}
|
||||
}
|
493
Src/Asp.Net/SqlSugar.Access/Tools/UtilMethods.cs
Normal file
493
Src/Asp.Net/SqlSugar.Access/Tools/UtilMethods.cs
Normal file
@@ -0,0 +1,493 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Diagnostics;
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
using System.Linq.Expressions;
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
namespace SqlSugar.Access
|
||||
{
|
||||
public class UtilMethods
|
||||
{
|
||||
|
||||
internal static DateTime ConvertFromDateTimeOffset(DateTimeOffset dateTime)
|
||||
{
|
||||
if (dateTime.Offset.Equals(TimeSpan.Zero))
|
||||
return dateTime.UtcDateTime;
|
||||
else if (dateTime.Offset.Equals(TimeZoneInfo.Local.GetUtcOffset(dateTime.DateTime)))
|
||||
return DateTime.SpecifyKind(dateTime.DateTime, DateTimeKind.Local);
|
||||
else
|
||||
return dateTime.DateTime;
|
||||
}
|
||||
|
||||
internal static object To(object value, Type destinationType)
|
||||
{
|
||||
return To(value, destinationType, CultureInfo.InvariantCulture);
|
||||
}
|
||||
|
||||
internal static object To(object value, Type destinationType, CultureInfo culture)
|
||||
{
|
||||
if (value != null)
|
||||
{
|
||||
destinationType = UtilMethods.GetUnderType(destinationType);
|
||||
var sourceType = value.GetType();
|
||||
|
||||
var destinationConverter = TypeDescriptor.GetConverter(destinationType);
|
||||
if (destinationConverter != null && destinationConverter.CanConvertFrom(value.GetType()))
|
||||
return destinationConverter.ConvertFrom(null, culture, value);
|
||||
|
||||
var sourceConverter = TypeDescriptor.GetConverter(sourceType);
|
||||
if (sourceConverter != null && sourceConverter.CanConvertTo(destinationType))
|
||||
return sourceConverter.ConvertTo(null, culture, value, destinationType);
|
||||
|
||||
if (destinationType.IsEnum && value is int)
|
||||
return Enum.ToObject(destinationType, (int)value);
|
||||
|
||||
if (!destinationType.IsInstanceOfType(value))
|
||||
return Convert.ChangeType(value, destinationType, culture);
|
||||
}
|
||||
return value;
|
||||
}
|
||||
public static bool IsAnyAsyncMethod(StackFrame[] methods)
|
||||
{
|
||||
bool isAsync = false;
|
||||
foreach (var item in methods)
|
||||
{
|
||||
if (UtilMethods.IsAsyncMethod(item.GetMethod()))
|
||||
{
|
||||
isAsync = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return isAsync;
|
||||
}
|
||||
|
||||
public static bool IsAsyncMethod(MethodBase method)
|
||||
{
|
||||
if (method == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (method.DeclaringType != null)
|
||||
{
|
||||
if (method.DeclaringType.GetInterfaces().Contains(typeof(IAsyncStateMachine)))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
var name = method.Name;
|
||||
if (name.Contains("OutputAsyncCausalityEvents"))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
if (name.Contains("OutputWaitEtwEvents"))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
if (name.Contains("ExecuteAsync"))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
Type attType = typeof(AsyncStateMachineAttribute);
|
||||
var attrib = (AsyncStateMachineAttribute)method.GetCustomAttribute(attType);
|
||||
return (attrib != null);
|
||||
}
|
||||
|
||||
public static StackTraceInfo GetStackTrace()
|
||||
{
|
||||
|
||||
StackTrace st = new StackTrace(true);
|
||||
StackTraceInfo info = new StackTraceInfo();
|
||||
info.MyStackTraceList = new List<StackTraceInfoItem>();
|
||||
info.SugarStackTraceList = new List<StackTraceInfoItem>();
|
||||
for (int i = 0; i < st.FrameCount; i++)
|
||||
{
|
||||
var frame = st.GetFrame(i);
|
||||
if (frame.GetMethod().Module.Name.ToLower() != "sqlsugar.dll" && frame.GetMethod().Name.First() != '<')
|
||||
{
|
||||
info.MyStackTraceList.Add(new StackTraceInfoItem()
|
||||
{
|
||||
FileName = frame.GetFileName(),
|
||||
MethodName = frame.GetMethod().Name,
|
||||
Line = frame.GetFileLineNumber()
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
info.SugarStackTraceList.Add(new StackTraceInfoItem()
|
||||
{
|
||||
FileName = frame.GetFileName(),
|
||||
MethodName = frame.GetMethod().Name,
|
||||
Line = frame.GetFileLineNumber()
|
||||
});
|
||||
}
|
||||
}
|
||||
return info;
|
||||
}
|
||||
|
||||
internal static T To<T>(object value)
|
||||
{
|
||||
return (T)To(value, typeof(T));
|
||||
}
|
||||
internal static Type GetUnderType(Type oldType)
|
||||
{
|
||||
Type type = Nullable.GetUnderlyingType(oldType);
|
||||
return type == null ? oldType : type;
|
||||
}
|
||||
public static string ReplaceSqlParameter(string itemSql, SugarParameter itemParameter, string newName)
|
||||
{
|
||||
itemSql = Regex.Replace(itemSql, string.Format(@"{0} ", "\\" + itemParameter.ParameterName), newName + " ", RegexOptions.IgnoreCase);
|
||||
itemSql = Regex.Replace(itemSql, string.Format(@"{0}\)", "\\" + itemParameter.ParameterName), newName + ")", RegexOptions.IgnoreCase);
|
||||
itemSql = Regex.Replace(itemSql, string.Format(@"{0}\,", "\\" + itemParameter.ParameterName), newName + ",", RegexOptions.IgnoreCase);
|
||||
itemSql = Regex.Replace(itemSql, string.Format(@"{0}$", "\\" + itemParameter.ParameterName), newName, RegexOptions.IgnoreCase);
|
||||
itemSql = Regex.Replace(itemSql, string.Format(@"\+{0}\+", "\\" + itemParameter.ParameterName), "+" + newName + "+", RegexOptions.IgnoreCase);
|
||||
itemSql = Regex.Replace(itemSql, string.Format(@"\+{0} ", "\\" + itemParameter.ParameterName), "+" + newName + " ", RegexOptions.IgnoreCase);
|
||||
itemSql = Regex.Replace(itemSql, string.Format(@" {0}\+", "\\" + itemParameter.ParameterName), " " + newName + "+", RegexOptions.IgnoreCase);
|
||||
itemSql = Regex.Replace(itemSql, string.Format(@"\|\|{0}\|\|", "\\" + itemParameter.ParameterName), "||" + newName + "||", RegexOptions.IgnoreCase);
|
||||
itemSql = Regex.Replace(itemSql, string.Format(@"\={0}\+", "\\" + itemParameter.ParameterName), "=" + newName + "+", RegexOptions.IgnoreCase);
|
||||
itemSql = Regex.Replace(itemSql, string.Format(@"{0}\|\|", "\\" + itemParameter.ParameterName), newName + "||", RegexOptions.IgnoreCase);
|
||||
return itemSql;
|
||||
}
|
||||
internal static Type GetRootBaseType(Type entityType)
|
||||
{
|
||||
var baseType = entityType.BaseType;
|
||||
while (baseType != null && baseType.BaseType != UtilConstants.ObjType)
|
||||
{
|
||||
baseType = baseType.BaseType;
|
||||
}
|
||||
return baseType;
|
||||
}
|
||||
|
||||
|
||||
internal static Type GetUnderType(PropertyInfo propertyInfo, ref bool isNullable)
|
||||
{
|
||||
Type unType = Nullable.GetUnderlyingType(propertyInfo.PropertyType);
|
||||
isNullable = unType != null;
|
||||
unType = unType ?? propertyInfo.PropertyType;
|
||||
return unType;
|
||||
}
|
||||
|
||||
internal static Type GetUnderType(PropertyInfo propertyInfo)
|
||||
{
|
||||
Type unType = Nullable.GetUnderlyingType(propertyInfo.PropertyType);
|
||||
unType = unType ?? propertyInfo.PropertyType;
|
||||
return unType;
|
||||
}
|
||||
|
||||
internal static bool IsNullable(PropertyInfo propertyInfo)
|
||||
{
|
||||
Type unType = Nullable.GetUnderlyingType(propertyInfo.PropertyType);
|
||||
return unType != null;
|
||||
}
|
||||
|
||||
internal static bool IsNullable(Type type)
|
||||
{
|
||||
Type unType = Nullable.GetUnderlyingType(type);
|
||||
return unType != null;
|
||||
}
|
||||
//internal static T IsNullReturnNew<T>(T returnObj) where T : new()
|
||||
//{
|
||||
// if (returnObj.IsNullOrEmpty())
|
||||
// {
|
||||
// returnObj = new T();
|
||||
// }
|
||||
// return returnObj;
|
||||
//}
|
||||
public static object ChangeType2(object value, Type type)
|
||||
{
|
||||
if (value == null && type.IsGenericType) return Activator.CreateInstance(type);
|
||||
if (value == null) return null;
|
||||
if (type == value.GetType()) return value;
|
||||
if (type.IsEnum)
|
||||
{
|
||||
if (value is string)
|
||||
return Enum.Parse(type, value as string);
|
||||
else
|
||||
return Enum.ToObject(type, value);
|
||||
}
|
||||
if (!type.IsInterface && type.IsGenericType)
|
||||
{
|
||||
Type innerType = type.GetGenericArguments()[0];
|
||||
object innerValue = ChangeType(value, innerType);
|
||||
return Activator.CreateInstance(type, new object[] { innerValue });
|
||||
}
|
||||
if (value is string && type == typeof(Guid)) return new Guid(value as string);
|
||||
if (value is string && type == typeof(Version)) return new Version(value as string);
|
||||
if (!(value is IConvertible)) return value;
|
||||
return Convert.ChangeType(value, type);
|
||||
}
|
||||
|
||||
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 DateTimeOffset GetDateTimeOffsetByDateTime(DateTime date)
|
||||
{
|
||||
date = DateTime.SpecifyKind(date, DateTimeKind.Utc);
|
||||
DateTimeOffset utcTime2 = date;
|
||||
return utcTime2;
|
||||
}
|
||||
|
||||
//internal static void RepairReplicationParameters(ref string appendSql, SugarParameter[] parameters, int addIndex, string append = null)
|
||||
//{
|
||||
// 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;
|
||||
// string newName = name + append + addIndex;
|
||||
// appendSql = ReplaceSqlParameter(appendSql, parameter, newName);
|
||||
// parameter.ParameterName = newName;
|
||||
// }
|
||||
// }
|
||||
//}
|
||||
|
||||
internal static string GetPackTable(string sql, string shortName)
|
||||
{
|
||||
return string.Format(" ({0}) {1} ", sql, shortName);
|
||||
}
|
||||
|
||||
public static Func<string, object> GetTypeConvert(object value)
|
||||
{
|
||||
if (value is int || value is uint || value is int? || value is uint?)
|
||||
{
|
||||
return x => Convert.ToInt32(x);
|
||||
}
|
||||
else if (value is short || value is ushort || value is short? || value is ushort?)
|
||||
{
|
||||
return x => Convert.ToInt16(x);
|
||||
}
|
||||
else if (value is long || value is long? || value is ulong? || value is long?)
|
||||
{
|
||||
return x => Convert.ToInt64(x);
|
||||
}
|
||||
else if (value is DateTime|| value is DateTime?)
|
||||
{
|
||||
return x => Convert.ToDateTime(x);
|
||||
}
|
||||
else if (value is bool||value is bool?)
|
||||
{
|
||||
return x => Convert.ToBoolean(x);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
internal static string GetTypeName(object value)
|
||||
{
|
||||
if (value == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
else
|
||||
{
|
||||
return value.GetType().Name;
|
||||
}
|
||||
}
|
||||
|
||||
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();
|
||||
return value;
|
||||
}
|
||||
|
||||
internal static object DefaultForType(Type targetType)
|
||||
{
|
||||
return targetType.IsValueType ? Activator.CreateInstance(targetType) : null;
|
||||
}
|
||||
|
||||
internal static Int64 GetLong(byte[] bytes)
|
||||
{
|
||||
return Convert.ToInt64(string.Join("", bytes).PadRight(20, '0'));
|
||||
}
|
||||
public static object GetPropertyValue<T>(T t, string PropertyName)
|
||||
{
|
||||
return t.GetType().GetProperty(PropertyName).GetValue(t, null);
|
||||
}
|
||||
internal static string GetMD5(string myString)
|
||||
{
|
||||
MD5 md5 = new MD5CryptoServiceProvider();
|
||||
byte[] fromData = System.Text.Encoding.Unicode.GetBytes(myString);
|
||||
byte[] targetData = md5.ComputeHash(fromData);
|
||||
string byte2String = null;
|
||||
|
||||
for (int i = 0; i < targetData.Length; i++)
|
||||
{
|
||||
byte2String += targetData[i].ToString("x");
|
||||
}
|
||||
|
||||
return byte2String;
|
||||
}
|
||||
|
||||
//public static string EncodeBase64(string code)
|
||||
//{
|
||||
// if (code.IsNullOrEmpty()) return code;
|
||||
// string encode = "";
|
||||
// byte[] bytes = Encoding.GetEncoding("utf-8").GetBytes(code);
|
||||
// try
|
||||
// {
|
||||
// encode = Convert.ToBase64String(bytes);
|
||||
// }
|
||||
// catch
|
||||
// {
|
||||
// encode = code;
|
||||
// }
|
||||
// return encode;
|
||||
//}
|
||||
public static string ConvertNumbersToString(string value)
|
||||
{
|
||||
string[] splitInt = value.Split(new char[] { '9' }, StringSplitOptions.RemoveEmptyEntries);
|
||||
|
||||
var splitChars = splitInt.Select(s => Convert.ToChar(
|
||||
Convert.ToInt32(s, 8)
|
||||
).ToString());
|
||||
|
||||
return string.Join("", splitChars);
|
||||
}
|
||||
public static string ConvertStringToNumbers(string value)
|
||||
{
|
||||
StringBuilder sb = new StringBuilder();
|
||||
|
||||
foreach (char c in value)
|
||||
{
|
||||
int cAscil = (int)c;
|
||||
sb.Append(Convert.ToString(c, 8) + "9");
|
||||
}
|
||||
|
||||
return sb.ToString();
|
||||
}
|
||||
|
||||
//public static string DecodeBase64(string code)
|
||||
//{
|
||||
// try
|
||||
// {
|
||||
// if (code.IsNullOrEmpty()) return code;
|
||||
// string decode = "";
|
||||
// byte[] bytes = Convert.FromBase64String(code);
|
||||
// try
|
||||
// {
|
||||
// decode = Encoding.GetEncoding("utf-8").GetString(bytes);
|
||||
// }
|
||||
// catch
|
||||
// {
|
||||
// decode = code;
|
||||
// }
|
||||
// return decode;
|
||||
// }
|
||||
// catch
|
||||
// {
|
||||
// return code;
|
||||
// }
|
||||
//}
|
||||
|
||||
public static void DataInoveByExpresson<Type>(Type[] datas, MethodCallExpression callExpresion)
|
||||
{
|
||||
var methodInfo = callExpresion.Method;
|
||||
foreach (var item in datas)
|
||||
{
|
||||
if (callExpresion.Arguments.Count == 0)
|
||||
{
|
||||
methodInfo.Invoke(item, null);
|
||||
}
|
||||
else
|
||||
{
|
||||
List<object> methodParameters = new List<object>();
|
||||
foreach (var callItem in callExpresion.Arguments)
|
||||
{
|
||||
var parameter = callItem.GetType().GetProperties().FirstOrDefault(it => it.Name == "Value");
|
||||
if (parameter == null)
|
||||
{
|
||||
var value = LambdaExpression.Lambda(callItem).Compile().DynamicInvoke();
|
||||
methodParameters.Add(value);
|
||||
}
|
||||
else
|
||||
{
|
||||
var value = parameter.GetValue(callItem, null);
|
||||
methodParameters.Add(value);
|
||||
}
|
||||
}
|
||||
methodInfo.Invoke(item, methodParameters.ToArray());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static Dictionary<string, T> EnumToDictionary<T>()
|
||||
{
|
||||
Dictionary<string, T> dic = new Dictionary<string, T>();
|
||||
if (!typeof(T).IsEnum)
|
||||
{
|
||||
return dic;
|
||||
}
|
||||
string desc = string.Empty;
|
||||
foreach (var item in Enum.GetValues(typeof(T)))
|
||||
{
|
||||
var key = item.ToString().ToLower();
|
||||
if (!dic.ContainsKey(key))
|
||||
dic.Add(key, (T)item);
|
||||
}
|
||||
return dic;
|
||||
}
|
||||
//public static object ConvertDataByTypeName(string ctypename,string value)
|
||||
//{
|
||||
// var item = new ConditionalModel() {
|
||||
// CSharpTypeName = ctypename,
|
||||
// FieldValue = value
|
||||
// };
|
||||
// if (item.CSharpTypeName.EqualCase(UtilConstants.DecType.Name))
|
||||
// {
|
||||
// return Convert.ToDecimal(item.FieldValue);
|
||||
// }
|
||||
// else if (item.CSharpTypeName.EqualCase(UtilConstants.DobType.Name))
|
||||
// {
|
||||
// return Convert.ToDouble(item.FieldValue);
|
||||
// }
|
||||
// else if (item.CSharpTypeName.EqualCase(UtilConstants.DateType.Name))
|
||||
// {
|
||||
// return Convert.ToDateTime(item.FieldValue);
|
||||
// }
|
||||
// else if (item.CSharpTypeName.EqualCase(UtilConstants.IntType.Name))
|
||||
// {
|
||||
// return Convert.ToInt32(item.FieldValue);
|
||||
// }
|
||||
// else if (item.CSharpTypeName.EqualCase(UtilConstants.LongType.Name))
|
||||
// {
|
||||
// return Convert.ToInt64(item.FieldValue);
|
||||
// }
|
||||
// else if (item.CSharpTypeName.EqualCase(UtilConstants.ShortType.Name))
|
||||
// {
|
||||
// return Convert.ToInt16(item.FieldValue);
|
||||
// }
|
||||
// else if (item.CSharpTypeName.EqualCase(UtilConstants.DateTimeOffsetType.Name))
|
||||
// {
|
||||
// return UtilMethods.GetDateTimeOffsetByDateTime(Convert.ToDateTime(item.FieldValue));
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// return item.FieldValue;
|
||||
// }
|
||||
//}
|
||||
}
|
||||
}
|
172
Src/Asp.Net/SqlSugar.Access/Tools/ValidateExtensions.cs
Normal file
172
Src/Asp.Net/SqlSugar.Access/Tools/ValidateExtensions.cs
Normal file
@@ -0,0 +1,172 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
namespace SqlSugar.Access
|
||||
{
|
||||
internal static class ValidateExtensions
|
||||
{
|
||||
public static bool IsInRange(this int thisValue, int begin, int end)
|
||||
{
|
||||
return thisValue >= begin && thisValue <= end;
|
||||
}
|
||||
|
||||
public static bool IsInRange(this DateTime thisValue, DateTime begin, DateTime end)
|
||||
{
|
||||
return thisValue >= begin && thisValue <= end;
|
||||
}
|
||||
|
||||
public static bool IsIn<T>(this T thisValue, params T[] values)
|
||||
{
|
||||
return values.Contains(thisValue);
|
||||
}
|
||||
|
||||
public static bool IsContainsIn(this string thisValue, params string[] inValues)
|
||||
{
|
||||
return inValues.Any(it => thisValue.Contains(it));
|
||||
}
|
||||
|
||||
public static bool IsNullOrEmpty(this object thisValue)
|
||||
{
|
||||
if (thisValue == null || thisValue == DBNull.Value) return true;
|
||||
return thisValue.ToString() == "";
|
||||
}
|
||||
|
||||
public static bool IsNullOrEmpty(this Guid? thisValue)
|
||||
{
|
||||
if (thisValue == null) return true;
|
||||
return thisValue == Guid.Empty;
|
||||
}
|
||||
|
||||
public static bool IsNullOrEmpty(this Guid thisValue)
|
||||
{
|
||||
if (thisValue == null) return true;
|
||||
return thisValue == Guid.Empty;
|
||||
}
|
||||
|
||||
public static bool IsNullOrEmpty(this IEnumerable<object> thisValue)
|
||||
{
|
||||
if (thisValue == null || thisValue.Count() == 0) return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
public static bool HasValue(this object thisValue)
|
||||
{
|
||||
if (thisValue == null || thisValue == DBNull.Value) return false;
|
||||
return thisValue.ToString() != "";
|
||||
}
|
||||
|
||||
public static bool HasValue(this IEnumerable<object> thisValue)
|
||||
{
|
||||
if (thisValue == null || thisValue.Count() == 0) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
public static bool IsValuable(this IEnumerable<KeyValuePair<string,string>> thisValue)
|
||||
{
|
||||
if (thisValue == null || thisValue.Count() == 0) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
public static bool IsZero(this object thisValue)
|
||||
{
|
||||
return (thisValue == null || thisValue.ToString() == "0");
|
||||
}
|
||||
|
||||
public static bool IsInt(this object thisValue)
|
||||
{
|
||||
if (thisValue == null) return false;
|
||||
return Regex.IsMatch(thisValue.ToString(), @"^\d+$");
|
||||
}
|
||||
|
||||
/// <returns></returns>
|
||||
public static bool IsNoInt(this object thisValue)
|
||||
{
|
||||
if (thisValue == null) return true;
|
||||
return !Regex.IsMatch(thisValue.ToString(), @"^\d+$");
|
||||
}
|
||||
|
||||
public static bool IsMoney(this object thisValue)
|
||||
{
|
||||
if (thisValue == null) return false;
|
||||
double outValue = 0;
|
||||
return double.TryParse(thisValue.ToString(), out outValue);
|
||||
}
|
||||
public static bool IsGuid(this object thisValue)
|
||||
{
|
||||
if (thisValue == null) return false;
|
||||
Guid outValue = Guid.Empty;
|
||||
return Guid.TryParse(thisValue.ToString(), out outValue);
|
||||
}
|
||||
|
||||
public static bool IsDate(this object thisValue)
|
||||
{
|
||||
if (thisValue == null) return false;
|
||||
DateTime outValue = DateTime.MinValue;
|
||||
return DateTime.TryParse(thisValue.ToString(), out outValue);
|
||||
}
|
||||
|
||||
public static bool IsEamil(this object thisValue)
|
||||
{
|
||||
if (thisValue == null) return false;
|
||||
return Regex.IsMatch(thisValue.ToString(), @"^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$");
|
||||
}
|
||||
|
||||
public static bool IsMobile(this object thisValue)
|
||||
{
|
||||
if (thisValue == null) return false;
|
||||
return Regex.IsMatch(thisValue.ToString(), @"^\d{11}$");
|
||||
}
|
||||
|
||||
public static bool IsTelephone(this object thisValue)
|
||||
{
|
||||
if (thisValue == null) return false;
|
||||
return System.Text.RegularExpressions.Regex.IsMatch(thisValue.ToString(), @"^(\(\d{3,4}\)|\d{3,4}-|\s)?\d{8}$");
|
||||
|
||||
}
|
||||
|
||||
public static bool IsIDcard(this object thisValue)
|
||||
{
|
||||
if (thisValue == null) return false;
|
||||
return System.Text.RegularExpressions.Regex.IsMatch(thisValue.ToString(), @"^(\d{15}$|^\d{18}$|^\d{17}(\d|X|x))$");
|
||||
}
|
||||
|
||||
public static bool IsFax(this object thisValue)
|
||||
{
|
||||
if (thisValue == null) return false;
|
||||
return System.Text.RegularExpressions.Regex.IsMatch(thisValue.ToString(), @"^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+$");
|
||||
}
|
||||
|
||||
public static bool IsMatch(this object thisValue, string pattern)
|
||||
{
|
||||
if (thisValue == null) return false;
|
||||
Regex reg = new Regex(pattern);
|
||||
return reg.IsMatch(thisValue.ToString());
|
||||
}
|
||||
public static bool IsAnonymousType(this Type type)
|
||||
{
|
||||
string typeName = type.Name;
|
||||
return typeName.Contains("<>") && typeName.Contains("__") && typeName.Contains("AnonymousType");
|
||||
}
|
||||
public static bool IsCollectionsList(this string thisValue)
|
||||
{
|
||||
return (thisValue + "").StartsWith("System.Collections.Generic.List")|| (thisValue + "").StartsWith("System.Collections.Generic.IEnumerable");
|
||||
}
|
||||
public static bool IsStringArray(this string thisValue)
|
||||
{
|
||||
return (thisValue + "").IsMatch(@"System\.[a-z,A-Z,0-9]+?\[\]");
|
||||
}
|
||||
public static bool IsEnumerable(this string thisValue)
|
||||
{
|
||||
return (thisValue + "").StartsWith("System.Linq.Enumerable");
|
||||
}
|
||||
|
||||
public static Type StringType = typeof (string);
|
||||
|
||||
public static bool IsClass(this Type thisValue)
|
||||
{
|
||||
return thisValue != StringType && thisValue.IsEntity()&&thisValue!=UtilConstants.ByteArrayType;
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user