Synchronization code

This commit is contained in:
sunkaixuan 2023-10-26 17:08:56 +08:00
parent b0d6a4bb0d
commit b85b5f300d
4 changed files with 69 additions and 14 deletions

View File

@ -344,6 +344,10 @@ namespace SqlSugar
{
ids = ids.Select(it => Convert.ToInt64(it)).Cast<object>().ToList();
}
if (navPkColumn?.UnderType?.Name == UtilConstants.StringType.Name)
{
ids = ids.Select(it => it?.ToString()?.Replace(",", "[comma]")).Cast<object>().ToList();
}
conditionalModels.Add((new ConditionalModel()
{
ConditionalType = ConditionalType.In,
@ -415,6 +419,10 @@ namespace SqlSugar
{
ids = ids.Select(it => Convert.ToInt64(it)).Cast<object>().ToList();
}
if (navColumn?.UnderType?.Name == UtilConstants.StringType.Name)
{
ids = ids.Select(it => it?.ToString()?.Replace(",", "[comma]")).Cast<object>().ToList();
}
conditionalModels.Add((new ConditionalModel()
{
ConditionalType = ConditionalType.In,

View File

@ -265,6 +265,10 @@ namespace SqlSugar
{
inValue1 = inValue1.Replace("'null'", "null");
}
else if (inValue1.Contains("[comma]"))
{
inValue1 = inValue1.Replace("[comma]", ",");
}
else if (inValue1.Contains("[null]"))
{
inValue1 = inValue1.Replace("[null]", "null");

View File

@ -11,7 +11,19 @@ namespace SqlSugar
{
static Assembly assembly = Assembly.GetExecutingAssembly();
static Dictionary<string, Type> typeCache = new Dictionary<string, Type>();
public static string CustomDllName = "";
private static string _CustomDllName = "";
private static List<string> CustomDlls = new List<string>();
public static string CustomDllName {
get { return _CustomDllName; }
set
{
if (!CustomDlls.Contains(value))
{
CustomDlls.Add(value);
}
_CustomDllName = value;
}
}
public static string CustomDbName = "";
public static string CustomNamespace = "";
public static bool NoCache = false;
@ -605,14 +617,30 @@ namespace SqlSugar
internal static Type GetCustomTypeByClass(string className)
{
var key = "Assembly_"+ CustomDllName+assembly.GetHashCode();
Type type = null;
foreach (var item in CustomDlls.AsEnumerable())
{
if (type == null)
{
type = GetCustomTypeByClass(className, item);
}
if(type != null)
{
break;
}
}
return type;
}
internal static Type GetCustomTypeByClass(string className,string customDllName)
{
var key = "Assembly_" + customDllName + assembly.GetHashCode();
var newAssembly = new ReflectionInoCacheService().GetOrCreate<Assembly>(key, () => {
try
{
var path = Assembly.GetExecutingAssembly().Location;
if (path.HasValue())
{
path =System.IO.Path.Combine( System.IO.Path.GetDirectoryName(path), CustomDllName + ".dll");
path = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(path), customDllName + ".dll");
}
if (path.HasValue() && FileHelper.IsExistFile(path))
{
@ -620,15 +648,15 @@ namespace SqlSugar
}
else
{
if (IsWebFrom)
if (IsWebFrom)
{
string newpath = (System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase) + "\\"+CustomDllName + ".dll").Replace("file:\\", "");
string newpath = (System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase) + "\\" + CustomDllName + ".dll").Replace("file:\\", "");
return Assembly.LoadFrom(newpath);
}
return Assembly.LoadFrom(CustomDllName + ".dll");
}
}
catch
catch
{
var message = "Not Found " + CustomDllName + ".dll";
Check.Exception(true, message);
@ -636,23 +664,38 @@ namespace SqlSugar
}
});
Type type = newAssembly.GetType(className);
if (type == null)
if (type == null)
{
type= assembly.GetType(className);
type = assembly.GetType(className);
}
return type;
}
internal static Type GetCustomTypeByClass<T>(string className)
{
var key = "Assembly_" + CustomDllName + assembly.GetHashCode();
Type type = null;
foreach (var item in CustomDlls.AsEnumerable())
{
if (type == null)
{
type = GetCustomTypeByClass<T>(className, item);
}
if (type != null)
{
break;
}
}
return type;
}
internal static Type GetCustomTypeByClass<T>(string className,string customDllName)
{
var key = "Assembly_" + customDllName + assembly.GetHashCode();
var newAssembly = new ReflectionInoCacheService().GetOrCreate<Assembly>(key, () => {
try
{
var path = Assembly.GetExecutingAssembly().Location;
if (path.HasValue())
{
path = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(path), CustomDllName + ".dll");
path = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(path), customDllName + ".dll");
}
if (path.HasValue() && FileHelper.IsExistFile(path))
{

View File

@ -69,7 +69,7 @@ namespace SqlSugar
.FirstOrDefault();
}
private static string GetMethodName(string name, List<string> methods)
{
{
var result = methods.FirstOrDefault(it => name.EqualCase("SqlFunc_" + it) || name.EqualCase(it));
Check.Exception(result == null, $" { name } is error ");
return result;
@ -92,12 +92,12 @@ namespace SqlSugar
string resSql;
var args = new List<MethodCallExpressionArgs>();
foreach (var item in parameters)
{
{
var value = GetSqlPart(item, resPars);
args.Add(new MethodCallExpressionArgs
{
MemberName = value,
MemberValue = value,
MemberValue = resPars.FirstOrDefault(it => it.ParameterName == value)?.Value?? value,
IsMember = true
});
}