Browse Source

Add ICustomConditionalFunc

pull/25/head
sunkaixuan 2 years ago
parent
commit
2152cd065e
  1. 12
      Src/Asp.Net/SqlSugar/Abstract/SqlBuilderProvider/SqlBuilderProvider.cs
  2. 8
      Src/Asp.Net/SqlSugar/Entities/ConditionalModel.cs
  3. 13
      Src/Asp.Net/SqlSugar/Interface/ICustomConditionalFunc.cs
  4. 1
      Src/Asp.Net/SqlSugar/SqlSugar.csproj
  5. 11
      Src/Asp.Net/SqlSugar/Utilities/DbExtensions.cs

12
Src/Asp.Net/SqlSugar/Abstract/SqlBuilderProvider/SqlBuilderProvider.cs

@ -129,7 +129,17 @@ namespace SqlSugar
if (model is ConditionalModel)
{
var item = model as ConditionalModel;
if (item.FieldName == $"[value=sql{UtilConstants.ReplaceKey}]")
if (item.CustomConditionalFunc != null)
{
var colIndex = mainIndex + beginIndex;
var colType = colIndex == 0 ? "" : "AND";
var custom = item.CustomConditionalFunc.GetConditionalSql(item, colIndex);
parameters.AddRange(custom.Value);
builder.AppendFormat(" "+colType + " "+custom.Key);
mainIndex++;
continue;
}
else if (item.FieldName == $"[value=sql{UtilConstants.ReplaceKey}]")
{
builder.Append(item.FieldValue);
continue;

8
Src/Asp.Net/SqlSugar/Entities/ConditionalModel.cs

@ -25,6 +25,14 @@ namespace SqlSugar
public string FieldName { get; set; }
public string FieldValue { get; set; }
public string CSharpTypeName { get; set; }
public ICustomConditionalFunc CustomConditionalFunc { get; set; }
public string CustomP1 { get; set; }
public string CustomP2 { get; set; }
public string CustomP3 { get; set; }
public string CustomP4 { get; set; }
public ConditionalType ConditionalType { get; set; }
[Newtonsoft.Json.JsonIgnoreAttribute]
public Func<string,object> FieldValueConvertFunc { get; set; }

13
Src/Asp.Net/SqlSugar/Interface/ICustomConditionalFunc.cs

@ -0,0 +1,13 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SqlSugar
{
public interface ICustomConditionalFunc
{
KeyValuePair<string, SugarParameter[]> GetConditionalSql(ConditionalModel json,int index);
}
}

1
Src/Asp.Net/SqlSugar/SqlSugar.csproj

@ -138,6 +138,7 @@
<Compile Include="ExpressionsToSql\Subquery\Items\SubSelectStringJoin.cs" />
<Compile Include="ExpressionsToSql\Subquery\Items\SubWithNoLock.cs" />
<Compile Include="ExpressionsToSql\Subquery\Items\SubEnableTableFilter.cs" />
<Compile Include="Interface\ICustomConditionalFunc.cs" />
<Compile Include="Json2Sql\Entities\JsonDeleteResult.cs" />
<Compile Include="Json2Sql\Entities\JsonInsertResult.cs" />
<Compile Include="Json2Sql\Entities\JsonQueryResult.cs" />

11
Src/Asp.Net/SqlSugar/Utilities/DbExtensions.cs

@ -79,6 +79,17 @@ namespace SqlSugar
}
return value;
}
public static string ToCheckRegexW(this string value)
{
if (Regex.IsMatch(value,@"^\w+$"))
{
return value;
}
else
{
throw new Exception($"ToCheckRegexW {value} format error ");
}
}
internal static string ToLower(this string value ,bool isAutoToLower)
{
if (value == null) return null;

Loading…
Cancel
Save