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 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>();
|
||||
|
@@ -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})";
|
||||
}
|
||||
|
@@ -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");
|
||||
|
@@ -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;
|
||||
}
|
||||
|
@@ -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) ";
|
||||
}
|
||||
|
@@ -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}) ";
|
||||
}
|
||||
|
@@ -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) ";
|
||||
}
|
||||
|
@@ -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}) ";
|
||||
}
|
||||
|
Reference in New Issue
Block a user