Synchronization code

This commit is contained in:
sunkaixuan
2023-10-03 13:34:25 +08:00
parent 59bf8c2cb9
commit 965d2d89bd
8 changed files with 56 additions and 10 deletions

View File

@@ -10,7 +10,20 @@ namespace SqlSugar
{
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)
{
var methodCalls = new List<string>();

View File

@@ -1083,6 +1083,10 @@ namespace SqlSugar
public virtual string FullTextContains(MethodCallExpressionModel mode)
{
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;
return $"to_tsvector('chinese', {columns}) @@ to_tsquery('chinese', {searchWord})";
}

View File

@@ -9,7 +9,10 @@ namespace SqlSugar
{
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)
{
throw new NotSupportedException("Can only be used in expressions");

View File

@@ -354,6 +354,7 @@ namespace SqlSugar
{
parameter.CommonTempData = CommonTempDataType.Result;
base.Expression = item;
var isRemoveParamter = false;
if (item.Type == UtilConstants.DateType && parameter.CommonTempData.ObjToString() == CommonTempDataType.Result.ToString() && item.ToString() == "DateTime.Now.Date")
{
parameter.CommonTempData = DateTime.Now.Date;
@@ -395,6 +396,12 @@ namespace SqlSugar
{
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
{
base.Start();
@@ -451,6 +458,8 @@ namespace SqlSugar
value = result;
}
methodCallExpressionArgs.MemberValue = value;
if (isRemoveParamter != true)
{
if (value == null && item != null)
{
this.Context.Parameters.Add(new SugarParameter(parameterName, value, UtilMethods.GetUnderType(item.Type)));
@@ -460,6 +469,7 @@ namespace SqlSugar
this.Context.Parameters.Add(new SugarParameter(parameterName, value));
}
}
}
model.Args.Add(methodCallExpressionArgs);
parameter.ChildExpression = null;
}

View File

@@ -268,6 +268,10 @@ namespace SqlSugar
public override string FullTextContains(MethodCallExpressionModel mode)
{
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;
return $" CONTAINS({columns}, {searchWord}, 1) ";
}

View File

@@ -265,6 +265,10 @@ namespace SqlSugar
public override string FullTextContains(MethodCallExpressionModel mode)
{
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;
return $" MATCH({columns}) AGAINST({searchWord}) ";
}

View File

@@ -398,6 +398,10 @@ namespace SqlSugar
public override string FullTextContains(MethodCallExpressionModel mode)
{
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;
return $" CONTAINS({columns}, {searchWord}, 1) ";
}

View File

@@ -143,6 +143,10 @@ namespace SqlSugar
public override string FullTextContains(MethodCallExpressionModel mode)
{
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;
return $" CONTAINS({columns},{searchWord}) ";
}