Synchronous code

This commit is contained in:
sunkaixuan
2025-09-25 11:05:56 +08:00
parent 8ff9ceda98
commit 38990015b1
29 changed files with 315 additions and 27 deletions

View File

@@ -790,7 +790,11 @@ namespace SqlSugar
}
}
public virtual Task<string> GetStringAsync(string sql, object parameters, CancellationToken cancellationToken)
{
this.CancellationToken = cancellationToken;
return GetStringAsync(sql, this.GetParameters(parameters));
}
public virtual Task<string> GetStringAsync(string sql, object parameters)
{
return GetStringAsync(sql, this.GetParameters(parameters));
@@ -842,7 +846,11 @@ namespace SqlSugar
{
return GetScalar(sql, parameters).ObjToInt();
}
public virtual Task<int> GetIntAsync(string sql, object parameters, CancellationToken cancellationToken)
{
this.CancellationToken = cancellationToken;
return GetIntAsync(sql, this.GetParameters(parameters));
}
public virtual Task<int> GetIntAsync(string sql, object parameters)
{
return GetIntAsync(sql, this.GetParameters(parameters));
@@ -883,7 +891,11 @@ namespace SqlSugar
return GetDouble(sql, parameters.ToArray());
}
}
public virtual Task<Double> GetDoubleAsync(string sql, object parameters, CancellationToken cancellationToken)
{
this.CancellationToken = cancellationToken;
return GetDoubleAsync(sql, this.GetParameters(parameters));
}
public virtual Task<Double> GetDoubleAsync(string sql, object parameters)
{
return GetDoubleAsync(sql, this.GetParameters(parameters));
@@ -1420,6 +1432,11 @@ namespace SqlSugar
return GetScalar(sql, parameters.ToArray());
}
}
public virtual Task<object> GetScalarAsync(string sql, object parameters, CancellationToken cancellationToken)
{
this.CancellationToken = cancellationToken;
return GetScalarAsync(sql, this.GetParameters(parameters));
}
public virtual Task<object> GetScalarAsync(string sql, object parameters)
{
return GetScalarAsync(sql, this.GetParameters(parameters));

View File

@@ -151,7 +151,7 @@ namespace SqlSugar
}
if (dr.GetDataTypeName(i) == "NUMBER")
{
return Convert.ToInt32(dr.GetDouble(i));
return Convert.ToInt32(dr.GetDecimal(i));
}
var result = dr.GetInt32(i);
return result;
@@ -160,7 +160,7 @@ namespace SqlSugar
{
if (dr.GetDataTypeName(i) == "NUMBER")
{
return Convert.ToInt32(dr.GetDouble(i));
return Convert.ToInt32(dr.GetDecimal(i));
}
var result = dr.GetInt32(i);
return result;

View File

@@ -53,7 +53,7 @@ namespace SqlSugar
}
return this;
}
public EntityColumnable<T> OneToMany(Expression<Func<T, object>> propertyExpression, string firstName, string lastName)
public EntityColumnable<T> OneToMany(Expression<Func<T, object>> propertyExpression, string firstName, string lastName=null)
{
var name = ExpressionTool.GetMemberName(propertyExpression);
if (entityColumnInfo.PropertyName == name && IsTable)
@@ -63,6 +63,16 @@ namespace SqlSugar
}
return this;
}
public EntityColumnable<T> OneToManyByArrayList(Expression<Func<T, object>> propertyExpression, string firstName, string lastName=null)
{
var name = ExpressionTool.GetMemberName(propertyExpression);
if (entityColumnInfo.PropertyName == name && IsTable)
{
entityColumnInfo.Navigat = new Navigate(NavigateType.OneToManyByArrayList, firstName, lastName);
entityColumnInfo.IsIgnore = true;
}
return this;
}
public EntityColumnable<T> ManyToMany(Expression<Func<T, object>> propertyExpression,Type mapppingType, string mapppingTypeAid, string mapppingTypeBid)
{

View File

@@ -141,11 +141,11 @@ namespace SqlSugar
}
else if (pkColumn.UnderType == UtilConstants.GuidType)
{
SetValue(pkColumn, insertData, () => Guid.NewGuid());
SetValue(pkColumn, insertData, () => UtilMethods.NewGuid());
}
else if (pkColumn.UnderType == UtilConstants.StringType)
{
SetValue(pkColumn, insertData, () => Guid.NewGuid().ToString());
SetValue(pkColumn, insertData, () => UtilMethods.NewGuid().ToString());
}
else
{

View File

@@ -177,14 +177,14 @@ namespace SqlSugar
{
if (this._Context?.CurrentConnectionConfig?.MoreSettings?.IsAutoDeleteQueryFilter == true)
{
this._Context.Deleteable<object>()
this._Context.Deleteable<TChild>()
.AS(thisEntity.DbTableName)
.EnableQueryFilter(thisEntity.Type)
.In(thisFkColumn.DbColumnName, ids.Distinct().ToList()).ExecuteCommand();
}
else
{
this._Context.Deleteable<object>()
this._Context.Deleteable<TChild>()
.AS(thisEntity.DbTableName)
.In(thisFkColumn.DbColumnName, ids.Distinct().ToList()).ExecuteCommand();
}

View File

@@ -164,11 +164,11 @@ namespace SqlSugar
}
else if (pkColumn.UnderType == UtilConstants.GuidType)
{
SetValue(pkColumn, UpdateData, () => Guid.NewGuid());
SetValue(pkColumn, UpdateData, () => UtilMethods.NewGuid());
}
else if (pkColumn.UnderType == UtilConstants.StringType)
{
SetValue(pkColumn, UpdateData, () => Guid.NewGuid().ToString());
SetValue(pkColumn, UpdateData, () => UtilMethods.NewGuid().ToString());
}
else
{

View File

@@ -177,6 +177,13 @@ namespace SqlSugar
OneToMany(pageList, selector, listItemEntity, navObjectNamePropety, navObjectNameColumnInfo);
});
}
else if (navObjectNameColumnInfo.Navigat.NavigatType == NavigateType.OneToManyByArrayList)
{
this.Context.Utilities.PageEach(list, 5000, pageList =>
{
OneToManyByArrayList(pageList, selector, listItemEntity, navObjectNamePropety, navObjectNameColumnInfo);
});
}
else if (navObjectNameColumnInfo.Navigat.NavigatType == NavigateType.ManyToOne)
{
this.Context.Utilities.PageEach(list, 5000, pageList =>
@@ -531,6 +538,124 @@ namespace SqlSugar
}
}
}
private void OneToManyByArrayList(List<object> list, Func<ISugarQueryable<object>, List<object>> selector, EntityInfo listItemEntity, System.Reflection.PropertyInfo navObjectNamePropety, EntityColumnInfo navObjectNameColumnInfo)
{
Check.ExceptionEasy(!navObjectNameColumnInfo.PropertyInfo.PropertyType.GetGenericArguments().Any(), navObjectNamePropety?.Name + "Navigation configuration error one to many should be List<T>", navObjectNamePropety?.Name + "导航配置错误一对多应该是List<T>");
var navEntity = navObjectNameColumnInfo.PropertyInfo.PropertyType.GetGenericArguments()[0];
var navEntityInfo = this.Context.EntityMaintenance.GetEntityInfo(navEntity);
var childDb = this.Context;
childDb = GetCrossDatabase(childDb, navEntityInfo.Type);
childDb.InitMappingInfo(navEntityInfo.Type);
var navColumn = listItemEntity.Columns.FirstOrDefault(it => it.PropertyName == navObjectNameColumnInfo.Navigat.Name);
Check.ExceptionEasy(navColumn == null, $"{navEntityInfo.EntityName} not found {navObjectNameColumnInfo.Navigat.Name} ", $"实体 {navEntityInfo.EntityName} 未找到导航配置列 {navObjectNameColumnInfo.Navigat.Name} ");
Check.ExceptionEasy(navColumn.IsJson==false&&navColumn.IsArray==false, $"Entity {navEntityInfo.EntityName} navigation configuration errors {navObjectNameColumnInfo.Navigat.Name}, needs to array and IsJson = true or Pgsql IsArray = true ", $"实体 {navEntityInfo.EntityName} 导航配置错误 {navObjectNameColumnInfo.Navigat.Name} 需要IsJson=true的数组或者pgsql如果是数组类型用 IsArray=true");
//var navType = navObjectNamePropety.PropertyType;
var listItemPkColumn = navEntityInfo.Columns.Where(it => it.IsPrimarykey).FirstOrDefault();
Check.ExceptionEasy(listItemPkColumn == null && navObjectNameColumnInfo.Navigat.Name2 == null, listItemEntity.EntityName + " not primary key", listItemEntity.EntityName + "没有主键");
if (navObjectNameColumnInfo.Navigat.Name2.HasValue())
{
listItemPkColumn = listItemEntity.Columns.Where(it => it.PropertyName == navObjectNameColumnInfo.Navigat.Name2).FirstOrDefault();
Check.ExceptionEasy(listItemPkColumn == null, $"{navObjectNameColumnInfo.PropertyName} Navigate is error ", $"{navObjectNameColumnInfo.PropertyName}导航配置错误,可能顺序反了。");
}
var ids = list.Select(it => it.GetType().GetProperty(navColumn.PropertyName).GetValue(it)).SelectMany(it => (it as IEnumerable).Cast<object>()).Distinct().ToList();
List<IConditionalModel> conditionalModels = new List<IConditionalModel>();
if (IsEnumNumber(navColumn))
{
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,
FieldName = listItemPkColumn.DbColumnName,
FieldValue = String.Join(",", ids),
CSharpTypeName = listItemPkColumn?.UnderType?.Name
}));
var sqlObj = GetWhereSql(childDb, navObjectNameColumnInfo.Navigat.Name);
if (list.Any() && navObjectNamePropety.GetValue(list.First()) == null)
{
if (sqlObj.SelectString == null)
{
var columns = navEntityInfo.Columns.Where(it => !it.IsIgnore)
.Select(it => GetOneToManySelectByColumnInfo(it, childDb)).ToList();
sqlObj.SelectString = String.Join(",", columns);
}
var navList = selector(childDb.Queryable<object>(sqlObj.TableShortName).AS(GetDbTableName(navEntityInfo, sqlObj)).ClearFilter(QueryBuilder.RemoveFilters).Filter(this.QueryBuilder?.IsDisabledGobalFilter == true ? null : navEntityInfo.Type).AddParameters(sqlObj.Parameters).Where(conditionalModels).WhereIF(sqlObj.WhereString.HasValue(), sqlObj.WhereString).WhereIF(navObjectNameColumnInfo?.Navigat?.WhereSql != null, navObjectNameColumnInfo?.Navigat?.WhereSql).Select(sqlObj.SelectString).OrderByIF(sqlObj.OrderByString.HasValue(), sqlObj.OrderByString));
if (navList.HasValue())
{
var groupQuery =
(from l in list.Distinct()
from n in navList
let lValue =
listItemPkColumn.PropertyInfo.GetValue(n).ObjToString()
let nValues =
((navColumn.PropertyInfo.GetValue(l) as IEnumerable)?.Cast<object>()??new List<object>())
where nValues != null && nValues.Select(x => x.ObjToString()).Contains(lValue)
select new
{
l,
n
})
.GroupBy(it => it.l)
.ToList();
foreach (var item in groupQuery)
{
var itemSelectList = item.Select(it => it.n);
if (sqlObj.Skip != null)
{
itemSelectList = itemSelectList
.Skip(sqlObj.Skip.Value);
}
if (sqlObj.Take != null)
{
itemSelectList = itemSelectList
.Take(sqlObj.Take.Value);
}
if (sqlObj.MappingExpressions.HasValue())
{
MappingFieldsHelper<T> helper = new MappingFieldsHelper<T>();
helper.NavEntity = navEntityInfo;
helper.Context = this.Context;
helper.RootEntity = this.Context.EntityMaintenance.GetEntityInfo<T>();
helper.SetChildList(navObjectNameColumnInfo, item.Key, itemSelectList.ToList(), sqlObj.MappingExpressions);
}
else
{
var instance = Activator.CreateInstance(navObjectNamePropety.PropertyType, true);
var ilist = instance as IList;
foreach (var value in itemSelectList.ToList())
{
ilist.Add(value);
}
navObjectNamePropety.SetValue(item.Key, instance);
}
}
foreach (var item in list)
{
if (navObjectNamePropety.GetValue(item) == null)
{
var instance = Activator.CreateInstance(navObjectNamePropety.PropertyType, true);
navObjectNamePropety.SetValue(item, instance);
}
}
}
else
{
//No navigation data set new List()
foreach (var item in list)
{
var instance = Activator.CreateInstance(navObjectNamePropety.PropertyType, true);
navObjectNamePropety.SetValue(item, instance);
}
}
}
}
private void OneToMany(List<object> list, Func<ISugarQueryable<object>, List<object>> selector, EntityInfo listItemEntity, System.Reflection.PropertyInfo navObjectNamePropety, EntityColumnInfo navObjectNameColumnInfo)
{

View File

@@ -133,7 +133,9 @@ namespace SqlSugar
var tableName = this.QueryBuilder.AsTables.FirstOrDefault().Value;
if (tableName.StartsWith(" (SELECT * FROM ("))
{
var list = this.Clone().Select<int>(" COUNT(1) ").ToList();
var copyDb = this.Clone();
copyDb.QueryBuilder.OrderByValue = null;
var list = copyDb.Select<int>(" COUNT(1) ").ToList();
return list.FirstOrDefault();
}
}

View File

@@ -162,7 +162,9 @@ namespace SqlSugar
var tableName= this.QueryBuilder.AsTables.FirstOrDefault().Value;
if (tableName.StartsWith(" (SELECT * FROM ("))
{
var list = await this.Clone().Select<int>(" COUNT(1) ").ToListAsync();
var copyDb = this.Clone();
copyDb.QueryBuilder.OrderByValue = null;
var list = await copyDb.Select<int>(" COUNT(1) ").ToListAsync();
return list.FirstOrDefault();
}
}

View File

@@ -686,6 +686,16 @@ namespace SqlSugar
}
}
}
else if (navColumn != null && navColumn.Navigat.NavigatType == NavigateType.ManyToMany)
{
var name1 = navColumn.Navigat.AClassId;
var name1Column = entityColumns.FirstOrDefault(it => it.PropertyName == name1);
if (name1Column != null)
{
if (!navInfo.AppendProperties.ContainsKey(name1Column.PropertyName))
navInfo.AppendProperties.Add(name1Column.PropertyName, name1Column.DbColumnName);
}
}
}
}
@@ -1776,7 +1786,7 @@ namespace SqlSugar
foreach (var item in s.Arguments)
{
var q = this.Context.Queryable<object>().QueryBuilder;
var itemObj= q.GetExpressionValue(item, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple).GetResultString();
var itemObj= q.GetExpressionValue(item, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.WhereMultiple).GetResultString();
if (q.Parameters.Any())
{
var itemGroupBySql = UtilMethods.GetSqlString(DbType.SqlServer, itemObj, q.Parameters.ToArray());

View File

@@ -575,11 +575,23 @@ namespace SqlSugar
var p = ParameterConverter.Invoke(obj, new object[] { value, 100 }) as SugarParameter;
value = p.Value;
}
var cSharpTypeName = UtilMethods.GetTypeName(value);
if (item.SqlParameterDbType is System.Data.DbType dbtype)
{
if (dbtype is System.Data.DbType.AnsiStringFixedLength)
{
cSharpTypeName = "char";
}
else if (dbtype is System.Data.DbType.StringFixedLength)
{
cSharpTypeName = "nchar";
}
}
condition.ConditionalList.Add(new KeyValuePair<WhereType, ConditionalModel>(i==0?WhereType.Or :WhereType.And, new ConditionalModel()
{
FieldName = item.DbColumnName,
ConditionalType = ConditionalType.Equal,
CSharpTypeName=UtilMethods.GetTypeName(value),
CSharpTypeName= cSharpTypeName,
FieldValue = value==null?"null":value.ObjToString(formatTime),
FieldValueConvertFunc=this.Context.CurrentConnectionConfig.DbType==DbType.PostgreSQL?
UtilMethods.GetTypeConvert(value):null

View File

@@ -593,7 +593,7 @@ namespace SqlSugar
}
}
private string ReplaceFilterColumnName(string sql, Type filterType,string shortName=null)
internal string ReplaceFilterColumnName(string sql, Type filterType,string shortName=null)
{
foreach (var column in this.Context.EntityMaintenance.GetEntityInfoWithAttr(filterType).Columns.Where(it => it.IsIgnore == false))
{

View File

@@ -241,6 +241,8 @@ namespace SqlSugar
}
public static DateTime[] GetDateRange(string date1Str, string date2Str)
{
date1Str = date1Str.Trim();
date2Str = date2Str.Trim();
var len = date2Str.Trim().Length;
if (date1Str.Length == 4)
{
@@ -250,8 +252,16 @@ namespace SqlSugar
{
date2Str = new DateTime(int.Parse(date2Str), 1, 1).ToString(SugarDateTimeFormat.Default);
}
if (date1Str.Length == 13)
{
date1Str = date1Str + ":00:00";
}
if (date2Str.Length == 13)
{
date2Str = date2Str + ":00:00";
}
if (!DateTime.TryParse(date1Str, out var date1))
Check.ExceptionEasy("date1 format is incorrect.(yyyy-MM-dd | yyyy | yyyy-MM | yyyy-MM-dd HH | yyyy-MM-dd HH:mm)", "date1 格式不正确,支持格式 yyyy-MM-dd | yyyy | yyyy-MM | yyyy-MM-dd HH | yyyy-MM-dd HH:mm");
Check.ExceptionEasy("date1 format is incorrect.(yyyy-MM-dd | yyyy | yyyy-MM | yyyy-MM-dd HH | yyyy-MM-dd HH:mm |yyyy-MM-dd HH:mm:ss)", "date1 格式不正确,支持格式 yyyy-MM-dd | yyyy | yyyy-MM | yyyy-MM-dd HH | yyyy-MM-dd HH:mm|yyyy-MM-dd HH:mm:ss");
if (!DateTime.TryParse(date2Str, out var date2))
Check.ExceptionEasy("date2 format is incorrect.", "date2 格式不正确");
@@ -266,8 +276,10 @@ namespace SqlSugar
date2 = date2.AddHours(1);
else if (len == 16) // yyyy-MM-dd HH:mm
date2 = date2.AddMinutes(1);
else if (len == 19) // yyyy-MM-dd HH:mm
date2 = date2.AddSeconds(1);
else
Check.ExceptionEasy("date format is incorrect.(yyyy-MM-dd | yyyy | yyyy-MM | yyyy-MM-dd HH | yyyy-MM-dd HH:mm)", "date 格式不正确,支持格式 yyyy-MM-dd | yyyy | yyyy-MM | yyyy-MM-dd HH | yyyy-MM-dd HH:mm");
Check.ExceptionEasy("date format is incorrect.(yyyy-MM-dd | yyyy | yyyy-MM | yyyy-MM-dd HH | yyyy-MM-dd HH:mm|yyyy-MM-dd HH:mm:ss)", "date 格式不正确,支持格式 yyyy-MM-dd | yyyy | yyyy-MM | yyyy-MM-dd HH | yyyy-MM-dd HH:mm|yyyy-MM-dd HH:mm:ss");
return new DateTime[] { date1, date2 };
}

View File

@@ -521,6 +521,9 @@ namespace SqlSugar
break;
case DbType.Tidb:
config.DbType = DbType.MySql;
if (this.CurrentConnectionConfig.MoreSettings == null)
this.CurrentConnectionConfig.MoreSettings = new ConnMoreSettings();
this.CurrentConnectionConfig.MoreSettings.DatabaseModel = DbType.Tidb;
break;
case DbType.PolarDB:
config.DbType = DbType.MySql;

View File

@@ -272,6 +272,11 @@ namespace SqlSugar
var tableName=$" ({queryable.Clone().ToSqlString()}) ";;
return this.InnerJoin(joinExpress, tableName);
}
public IUpdateable<T, T2> InnerJoin<T2>(ISugarQueryable<T2> queryable, Expression<Func<T, T2, bool>> joinExpress)
{
var tableName = $" ({queryable.Clone().ToSqlString()}) "; ;
return this.InnerJoin(joinExpress, tableName);
}
public IUpdateable<T, T2> InnerJoin<T2>(Expression<Func<T, T2, bool>> joinExpress,string TableName)
{
UpdateableProvider<T, T2> result = new UpdateableProvider<T, T2>();

View File

@@ -12,6 +12,7 @@ namespace SqlSugar
OneToMany=2,
ManyToOne=3,
ManyToMany=4,
Dynamic=5
Dynamic=5,
OneToManyByArrayList
}
}

View File

@@ -4,10 +4,12 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SqlSugar
namespace SqlSugar
{
public class ExpressionContextCase
{
public bool IsDateString { get; set; }
public bool HasWhere { get; set; }
public int Num { get; set; } = 1;
}
}

View File

@@ -895,7 +895,7 @@ namespace SqlSugar
}
else
{
var value = baseResolve.GetNewExpressionValue(memberAssignment.Expression);
var value = baseResolve.GetNewExpressionValue(ExpressionTool.RemoveConvert(memberAssignment.Expression));
//var leftInfo = keys[i];
additem.Type = nameof(ConstantExpression);
additem.RightName = memberAssignment.Member.Name;

View File

@@ -904,7 +904,7 @@ namespace SqlSugar
if(sql.Contains(replace))
{
var value = columnInfo.PropertyInfo.GetValue(item);
var newValue = "null";
string newValue = null;
if (value != null)
{
if (UtilMethods.IsNumber(columnInfo.UnderType.Name))
@@ -953,6 +953,10 @@ namespace SqlSugar
if (columnInfo.SqlParameterDbType is System.Data.DbType type && type == System.Data.DbType.AnsiString)
{
}
else if(newValue==null)
{
newValue = "null";
}
else
{
@@ -961,6 +965,7 @@ namespace SqlSugar
}
}
sql = sql.Replace(replace, newValue);
sql = sql.Replace(" = null ", " is null ");
}
}
sb.Append(sql);

View File

@@ -40,8 +40,9 @@ namespace SqlSugar
#endregion
#region Get Mehtod
protected object GetMemberValue(object value, Expression exp)
protected object GetMemberValue(object value, Expression exp,out SugarParameter outConvertParameter)
{
outConvertParameter = null;
if (exp is MemberExpression)
{
var member = (exp as MemberExpression);
@@ -57,6 +58,7 @@ namespace SqlSugar
var obj = Activator.CreateInstance(type);
var p = ParameterConverter.Invoke(obj, new object[] { value, 100 + this.Context.ParameterIndex }) as SugarParameter;
value = p.Value;
outConvertParameter = p;
}
}
}

View File

@@ -38,11 +38,19 @@ namespace SqlSugar
if (parameter.OppsiteExpression != null)
{
var exp = ExpressionTool.RemoveConvert(parameter.OppsiteExpression);
value = GetMemberValue(value, exp);
value = GetMemberValue(value, exp,out SugarParameter outConvertParameter);
var valueFullName = value?.GetType()?.FullName;
if (valueFullName == "Microsoft.Extensions.Primitives.StringValues")
{
value = value.ToString();
}
if (outConvertParameter!=null && isSetTempData == false&& exp is MemberExpression m)
{
outConvertParameter.ParameterName = $"@{m.Member.Name}" + this.Context.ParameterIndex;
this.Context.ParameterIndex++;
this.Context.Parameters.Add(outConvertParameter);
AppendMember(parameter, isLeft, outConvertParameter.ParameterName);
return;
}
}
if (isSetTempData)

View File

@@ -458,6 +458,12 @@ namespace SqlSugar
isRemoveParamter = true;
isNegate = true;
}
else if (name == "IIF"&&item is MemberExpression member&& member?.Expression is BinaryExpression&& ExpressionTool.GetParameters(member).Count>0)
{
parameter.CommonTempData = GetNewExpressionValue(member);
isRemoveParamter = true;
isNegate = true;
}
else
{
base.Start();
@@ -516,7 +522,7 @@ namespace SqlSugar
List<object> result = new List<object>();
foreach (var memItem in (value as IList))
{
result.Add(GetMemberValue(memItem, args.Last()));
result.Add(GetMemberValue(memItem, args.Last(), out SugarParameter outConvertParameter));
}
value = result;
}

View File

@@ -64,6 +64,11 @@ namespace SqlSugar
var whereStr = isWhere ? " AND " : " WHERE ";
isWhere = true;
result += (whereStr + SubTools.GetMethodValue(Context, exp, ResolveExpressType.WhereSingle));
if (ChildType.IsInterface&& this.Context?.SugarContext?.QueryBuilder!=null)
{
var filterType = ChildType;
result =this.Context.SugarContext?.QueryBuilder.ReplaceFilterColumnName(result, type);
}
}
}
}

View File

@@ -82,6 +82,11 @@ namespace SqlSugar
}
else if (this.Context.GetLimit() != null)
{
if (this?.Context?.Case != null)
{
this.Context.Case.HasWhere = this.HasWhere;
this.Context.Case.Num = num;
}
return this.Context.GetLimit();
}
else

View File

@@ -67,6 +67,10 @@ namespace SqlSugar
}
else if (this.Context.GetLimit()!=null)
{
if (this?.Context?.Case != null)
{
this.Context.Case.HasWhere = this.HasWhere;
}
return this.Context.GetLimit();
}
else

View File

@@ -9,6 +9,10 @@ namespace SqlSugar
{ }
public class Subqueryable<T1, T2, T3, T4, T5, T6, T7, T8, T9> : Subqueryable<T1> where T1 : class, new()
{
public Subqueryable<T1, T2, T3, T4, T5, T6, T7, T8,T9> Having(Func<T1, T2, T3, T4, T5, T6, T7, T8,T9, bool> expression)
{
return this;
}
public new Subqueryable<T1, T2, T3, T4, T5, T6, T7, T8,T9> AsWithAttr()
{
return this;
@@ -76,6 +80,10 @@ namespace SqlSugar
}
public class Subqueryable<T1, T2, T3, T4, T5, T6, T7, T8> : Subqueryable<T1> where T1 : class, new()
{
public Subqueryable<T1, T2, T3, T4, T5, T6,T7,T8> Having(Func<T1, T2, T3, T4, T5, T6, T7, T8, bool> expression)
{
return this;
}
public new Subqueryable<T1, T2, T3, T4, T5, T6, T7,T8> AsWithAttr()
{
return this;
@@ -139,6 +147,10 @@ namespace SqlSugar
}
public class Subqueryable<T1, T2, T3, T4, T5, T6, T7> : Subqueryable<T1> where T1 : class, new()
{
public Subqueryable<T1, T2, T3, T4, T5, T6,T7> Having(Func<T1, T2, T3, T4, T5, T6,T7, bool> expression)
{
return this;
}
public new Subqueryable<T1, T2, T3, T4, T5, T6,T7> AsWithAttr()
{
return this;
@@ -198,6 +210,10 @@ namespace SqlSugar
}
public class Subqueryable<T1, T2, T3, T4, T5, T6> : Subqueryable<T1> where T1 : class, new()
{
public Subqueryable<T1, T2, T3, T4, T5,T6> Having(Func<T1, T2, T3, T4, T5,T6, bool> expression)
{
return this;
}
public string SelectStringJoin(Func<T1, T2, T3, T4, T5,T6, string> expression, string separator)
{
return default(string);
@@ -262,6 +278,10 @@ namespace SqlSugar
}
public class Subqueryable<T1, T2, T3, T4, T5> : Subqueryable<T1> where T1 : class, new()
{
public Subqueryable<T1, T2, T3, T4,T5> Having(Func<T1, T2, T3, T4,T5, bool> expression)
{
return this;
}
public string SelectStringJoin(Func<T1, T2, T3, T4,T5, string> expression, string separator)
{
return default(string);
@@ -322,6 +342,10 @@ namespace SqlSugar
}
public class Subqueryable<T1, T2, T3, T4> : Subqueryable<T1> where T1 : class, new()
{
public Subqueryable<T1, T2, T3,T4> Having(Func<T1, T2, T3,T4, bool> expression)
{
return this;
}
public new Subqueryable<T1, T2, T3,T4> AsWithAttr()
{
return this;
@@ -572,6 +596,10 @@ namespace SqlSugar
{
return this;
}
public Subqueryable<T1, T2,T3> Having(Func<T1, T2,T3, bool> expression)
{
return this;
}
}
public class Subqueryable<T1, T2> : Subqueryable<T1> where T1 : class, new()
{
@@ -696,5 +724,9 @@ namespace SqlSugar
{
return this;
}
public Subqueryable<T1,T2> Having(Func<T1,T2, bool> expression)
{
return this;
}
}
}

View File

@@ -75,6 +75,7 @@ namespace SqlSugar
object GetScalar(string sql, List<SugarParameter> parameters);
Task<object> GetScalarAsync(string sql, object parameters);
Task<object> GetScalarAsync(string sql, object parameters, CancellationToken cancellationToken);
Task<object> GetScalarAsync(string sql, params SugarParameter[] parameters);
Task<object> GetScalarAsync(string sql, List<SugarParameter> parameters);
@@ -92,6 +93,7 @@ namespace SqlSugar
string GetString(string sql, params SugarParameter[] parameters);
string GetString(string sql, List<SugarParameter> parameters);
Task<string> GetStringAsync(string sql, object parameters);
Task<string> GetStringAsync(string sql, object parameters, CancellationToken cancellationToken);
Task<string> GetStringAsync(string sql, params SugarParameter[] parameters);
Task<string> GetStringAsync(string sql, List<SugarParameter> parameters);
@@ -101,6 +103,7 @@ namespace SqlSugar
int GetInt(string sql, List<SugarParameter> parameters);
Task<int> GetIntAsync(string sql, object pars);
Task<int> GetIntAsync(string sql, object pars,CancellationToken cancellationToken);
Task<int> GetIntAsync(string sql, params SugarParameter[] parameters);
Task<int> GetIntAsync(string sql, List<SugarParameter> parameters);
@@ -114,7 +117,7 @@ namespace SqlSugar
Double GetDouble(string sql, params SugarParameter[] parameters);
Double GetDouble(string sql, List<SugarParameter> parameters);
Task<Double> GetDoubleAsync(string sql, object parameters, CancellationToken cancellationToken);
Task<Double> GetDoubleAsync(string sql, object parameters);
Task<Double> GetDoubleAsync(string sql, params SugarParameter[] parameters);
Task<Double> GetDoubleAsync(string sql, List<SugarParameter> parameters);

View File

@@ -122,6 +122,7 @@ namespace SqlSugar
IUpdateable<T,T2> InnerJoin<T2>(Expression<Func<T,T2,bool>> joinExpress);
IUpdateable<T, T2> InnerJoin<T2>(Expression<Func<T, T2, bool>> joinExpress,string tableName);
IUpdateable<T, T2> InnerJoin<T2>(ISugarQueryable<T> queryable,Expression<Func<T, T2, bool>> joinExpress);
IUpdateable<T, T2> InnerJoin<T2>(ISugarQueryable<T2> queryable, Expression<Func<T, T2, bool>> joinExpress);
UpdateablePage<T> PageSize(int pageSize);
IUpdateable<T> In(object[] ids);
ParameterUpdateable<T> UseParameter();

View File

@@ -2015,5 +2015,21 @@ namespace SqlSugar
{
return context?.SugarContext?.Context?.CurrentConnectionConfig?.MoreSettings ?? new ConnMoreSettings();
}
public static object NewGuid()
{
if (StaticConfig.CustomGuidFunc != null)
{
return StaticConfig.CustomGuidFunc();
}
else if (StaticConfig.CustomGuidByValueFunc != null)
{
return StaticConfig.CustomGuidByValueFunc(Guid.NewGuid());
}
else
{
return Guid.NewGuid();
}
}
}
}