mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-09-24 13:03:43 +08:00
Synchronization code
This commit is contained in:
@@ -10,7 +10,20 @@ namespace SqlSugar
|
|||||||
{
|
{
|
||||||
public class ExpressionTool
|
public class ExpressionTool
|
||||||
{
|
{
|
||||||
|
public static List<string> GetNewArrayMembers(NewArrayExpression newArrayExpression)
|
||||||
|
{
|
||||||
|
List<string> strings = new List<string>();
|
||||||
|
// 获取数组元素的 MemberExpression,并输出属性名
|
||||||
|
foreach (var expression in newArrayExpression.Expressions)
|
||||||
|
{
|
||||||
|
var memberExpression = expression as MemberExpression;
|
||||||
|
if (memberExpression != null)
|
||||||
|
{
|
||||||
|
strings.Add(memberExpression.Member.Name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return strings;
|
||||||
|
}
|
||||||
public static List<string> GetTopLevelMethodCalls(Expression expression)
|
public static List<string> GetTopLevelMethodCalls(Expression expression)
|
||||||
{
|
{
|
||||||
var methodCalls = new List<string>();
|
var methodCalls = new List<string>();
|
||||||
|
@@ -1083,6 +1083,10 @@ namespace SqlSugar
|
|||||||
public virtual string FullTextContains(MethodCallExpressionModel mode)
|
public virtual string FullTextContains(MethodCallExpressionModel mode)
|
||||||
{
|
{
|
||||||
var columns = mode.Args[0].MemberName;
|
var columns = mode.Args[0].MemberName;
|
||||||
|
if (mode.Args[0].MemberValue is List<string>)
|
||||||
|
{
|
||||||
|
columns = string.Join("|| ' ' ||", mode.Args[0].MemberValue as List<string>) ;
|
||||||
|
}
|
||||||
var searchWord = mode.Args[1].MemberName;
|
var searchWord = mode.Args[1].MemberName;
|
||||||
return $"to_tsvector('chinese', {columns}) @@ to_tsquery('chinese', {searchWord})";
|
return $"to_tsvector('chinese', {columns}) @@ to_tsquery('chinese', {searchWord})";
|
||||||
}
|
}
|
||||||
|
@@ -9,7 +9,10 @@ namespace SqlSugar
|
|||||||
{
|
{
|
||||||
public partial class SqlFunc
|
public partial class SqlFunc
|
||||||
{
|
{
|
||||||
|
public static bool FullTextContains(string [] columnNames, string keyword)
|
||||||
|
{
|
||||||
|
throw new NotSupportedException("Can only be used in expressions");
|
||||||
|
}
|
||||||
public static bool FullTextContains(string columnName,string keyword)
|
public static bool FullTextContains(string columnName,string keyword)
|
||||||
{
|
{
|
||||||
throw new NotSupportedException("Can only be used in expressions");
|
throw new NotSupportedException("Can only be used in expressions");
|
||||||
|
@@ -354,6 +354,7 @@ namespace SqlSugar
|
|||||||
{
|
{
|
||||||
parameter.CommonTempData = CommonTempDataType.Result;
|
parameter.CommonTempData = CommonTempDataType.Result;
|
||||||
base.Expression = item;
|
base.Expression = item;
|
||||||
|
var isRemoveParamter = false;
|
||||||
if (item.Type == UtilConstants.DateType && parameter.CommonTempData.ObjToString() == CommonTempDataType.Result.ToString() && item.ToString() == "DateTime.Now.Date")
|
if (item.Type == UtilConstants.DateType && parameter.CommonTempData.ObjToString() == CommonTempDataType.Result.ToString() && item.ToString() == "DateTime.Now.Date")
|
||||||
{
|
{
|
||||||
parameter.CommonTempData = DateTime.Now.Date;
|
parameter.CommonTempData = DateTime.Now.Date;
|
||||||
@@ -391,10 +392,16 @@ namespace SqlSugar
|
|||||||
return res;
|
return res;
|
||||||
}).ToArray();
|
}).ToArray();
|
||||||
}
|
}
|
||||||
else if (name == "Format" && item is ConstantExpression)
|
else if (name == "Format" && item is ConstantExpression)
|
||||||
{
|
{
|
||||||
parameter.CommonTempData = ExpressionTool.GetExpressionValue(item);
|
parameter.CommonTempData = ExpressionTool.GetExpressionValue(item);
|
||||||
}
|
}
|
||||||
|
else if (name == "FullTextContains" && item is NewArrayExpression)
|
||||||
|
{
|
||||||
|
var array = ExpressionTool.GetNewArrayMembers(item as NewArrayExpression);
|
||||||
|
parameter.CommonTempData = array;
|
||||||
|
isRemoveParamter = true;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
base.Start();
|
base.Start();
|
||||||
@@ -451,15 +458,18 @@ namespace SqlSugar
|
|||||||
value = result;
|
value = result;
|
||||||
}
|
}
|
||||||
methodCallExpressionArgs.MemberValue = value;
|
methodCallExpressionArgs.MemberValue = value;
|
||||||
if (value == null&&item!=null)
|
if (isRemoveParamter != true)
|
||||||
{
|
{
|
||||||
this.Context.Parameters.Add(new SugarParameter(parameterName, value,UtilMethods.GetUnderType( item.Type)));
|
if (value == null && item != null)
|
||||||
|
{
|
||||||
|
this.Context.Parameters.Add(new SugarParameter(parameterName, value, UtilMethods.GetUnderType(item.Type)));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
this.Context.Parameters.Add(new SugarParameter(parameterName, value));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
}
|
||||||
{
|
|
||||||
this.Context.Parameters.Add(new SugarParameter(parameterName, value));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
model.Args.Add(methodCallExpressionArgs);
|
model.Args.Add(methodCallExpressionArgs);
|
||||||
parameter.ChildExpression = null;
|
parameter.ChildExpression = null;
|
||||||
}
|
}
|
||||||
|
@@ -268,6 +268,10 @@ namespace SqlSugar
|
|||||||
public override string FullTextContains(MethodCallExpressionModel mode)
|
public override string FullTextContains(MethodCallExpressionModel mode)
|
||||||
{
|
{
|
||||||
var columns = mode.Args[0].MemberName;
|
var columns = mode.Args[0].MemberName;
|
||||||
|
if (mode.Args[0].MemberValue is List<string>)
|
||||||
|
{
|
||||||
|
columns = "(" + string.Join(",", mode.Args[0].MemberValue as List<string>) + ")";
|
||||||
|
}
|
||||||
var searchWord = mode.Args[1].MemberName;
|
var searchWord = mode.Args[1].MemberName;
|
||||||
return $" CONTAINS({columns}, {searchWord}, 1) ";
|
return $" CONTAINS({columns}, {searchWord}, 1) ";
|
||||||
}
|
}
|
||||||
|
@@ -265,6 +265,10 @@ namespace SqlSugar
|
|||||||
public override string FullTextContains(MethodCallExpressionModel mode)
|
public override string FullTextContains(MethodCallExpressionModel mode)
|
||||||
{
|
{
|
||||||
var columns = mode.Args[0].MemberName;
|
var columns = mode.Args[0].MemberName;
|
||||||
|
if (mode.Args[0].MemberValue is List<string>)
|
||||||
|
{
|
||||||
|
columns = string.Join(",", mode.Args[0].MemberValue as List<string>) ;
|
||||||
|
}
|
||||||
var searchWord = mode.Args[1].MemberName;
|
var searchWord = mode.Args[1].MemberName;
|
||||||
return $" MATCH({columns}) AGAINST({searchWord}) ";
|
return $" MATCH({columns}) AGAINST({searchWord}) ";
|
||||||
}
|
}
|
||||||
|
@@ -398,6 +398,10 @@ namespace SqlSugar
|
|||||||
public override string FullTextContains(MethodCallExpressionModel mode)
|
public override string FullTextContains(MethodCallExpressionModel mode)
|
||||||
{
|
{
|
||||||
var columns = mode.Args[0].MemberName;
|
var columns = mode.Args[0].MemberName;
|
||||||
|
if (mode.Args[0].MemberValue is List<string>)
|
||||||
|
{
|
||||||
|
columns = "(" + string.Join(",", mode.Args[0].MemberValue as List<string>) + ")";
|
||||||
|
}
|
||||||
var searchWord = mode.Args[1].MemberName;
|
var searchWord = mode.Args[1].MemberName;
|
||||||
return $" CONTAINS({columns}, {searchWord}, 1) ";
|
return $" CONTAINS({columns}, {searchWord}, 1) ";
|
||||||
}
|
}
|
||||||
|
@@ -143,6 +143,10 @@ namespace SqlSugar
|
|||||||
public override string FullTextContains(MethodCallExpressionModel mode)
|
public override string FullTextContains(MethodCallExpressionModel mode)
|
||||||
{
|
{
|
||||||
var columns = mode.Args[0].MemberName;
|
var columns = mode.Args[0].MemberName;
|
||||||
|
if (mode.Args[0].MemberValue is List<string>)
|
||||||
|
{
|
||||||
|
columns = "("+string.Join(",", mode.Args[0].MemberValue as List<string>)+")";
|
||||||
|
}
|
||||||
var searchWord = mode.Args[1].MemberName;
|
var searchWord = mode.Args[1].MemberName;
|
||||||
return $" CONTAINS({columns},{searchWord}) ";
|
return $" CONTAINS({columns},{searchWord}) ";
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user