Synchronization code

This commit is contained in:
sunkaixuan 2025-03-28 16:51:27 +08:00
parent 659dbbc3c2
commit 04e31fc4df
12 changed files with 57 additions and 15 deletions

View File

@ -738,6 +738,10 @@ namespace SqlSugar
{
return false;
}
else if (ec.UnderType == UtilConstants.LongType && dc.Length == 19 && dc.DecimalDigits == 0 && dc.OracleDataType?.EqualCase("number") == true)
{
return false;
}
else
{
return properyTypeName.ToLower() != dataType.ToLower();

View File

@ -363,6 +363,8 @@ namespace SqlSugar
method = null;
if (bindPropertyType ==UtilConstants.IntType&& this.Context.CurrentConnectionConfig.DbType == DbType.OceanBaseForOracle)
method = isNullableType ? getMyIntNull : getMyInt;
if (bindProperyTypeName == "int16")
method = null;
break;
case CSharpDataType.@bool:
if (bindProperyTypeName == "bool" || bindProperyTypeName == "boolean")

View File

@ -12,6 +12,7 @@ namespace SqlSugar
{
private IFastBuilder GetBuider()
{
var className = string.Empty;
switch (this.context.CurrentConnectionConfig.DbType)
{
case DbType.MySql:
@ -46,10 +47,14 @@ namespace SqlSugar
break;
case DbType.QuestDB:
return new QuestDBFastBuilder(this.entityInfo);
case DbType.Custom:
className = InstanceFactory.CustomNamespace + "." + InstanceFactory.CustomDbName + "FastBuilder";
break;
default:
className = $"SqlSugar.{this.context.CurrentConnectionConfig.DbType}FastBuilder";
break;
}
var reslut = InstanceFactory.CreateInstance<IFastBuilder>($"SqlSugar.{this.context.CurrentConnectionConfig.DbType}FastBuilder");
var reslut = InstanceFactory.CreateInstance<IFastBuilder>(className);
reslut.CharacterSet = this.CharacterSet;
reslut.FastEntityInfo = this.entityInfo;
return reslut;

View File

@ -40,7 +40,7 @@ namespace SqlSugar
_Filters.RemoveAll(it => it.FilterName == filterName);
}
public List<SqlFilterItem> GeFilterList
public List<SqlFilterItem> GetFilterList
{
get
{

View File

@ -1797,9 +1797,9 @@ namespace SqlSugar
protected void _Filter(string FilterName, bool isDisabledGobalFilter)
{
QueryBuilder.IsDisabledGobalFilter = isDisabledGobalFilter;
if (this.Context.QueryFilter.GeFilterList.HasValue() && FilterName.HasValue())
if (this.Context.QueryFilter.GetFilterList.HasValue() && FilterName.HasValue())
{
var list = this.Context.QueryFilter.GeFilterList.Where(it => it.FilterName == FilterName && it.IsJoinQuery == !QueryBuilder.IsSingle());
var list = this.Context.QueryFilter.GetFilterList.Where(it => it.FilterName == FilterName && it.IsJoinQuery == !QueryBuilder.IsSingle());
foreach (var item in list)
{
var filterResult = item.FilterValue(this.Context);

View File

@ -312,9 +312,9 @@ namespace SqlSugar
var db = Context;
BindingFlags flag = BindingFlags.Instance | BindingFlags.NonPublic| BindingFlags.Public;
var index = 0;
if (db.QueryFilter.GeFilterList != null)
if (db.QueryFilter.GetFilterList != null)
{
foreach (var item in db.QueryFilter.GeFilterList)
foreach (var item in db.QueryFilter.GetFilterList)
{
if (this.RemoveFilters != null && this.RemoveFilters.Length > 0)
{
@ -384,9 +384,9 @@ namespace SqlSugar
public virtual void AppendFilter()
{
if (!IsDisabledGobalFilter && this.Context.QueryFilter.GeFilterList.HasValue())
if (!IsDisabledGobalFilter && this.Context.QueryFilter.GetFilterList.HasValue())
{
var gobalFilterList = this.Context.QueryFilter.GeFilterList.Where(it => it.FilterName.IsNullOrEmpty()).ToList();
var gobalFilterList = this.Context.QueryFilter.GetFilterList.Where(it => it.FilterName.IsNullOrEmpty()).ToList();
if (this.RemoveFilters != null && this.RemoveFilters.Length > 0)
{
gobalFilterList = gobalFilterList.Where(it => !this.RemoveFilters.Contains(it.type)).ToList();

View File

@ -432,10 +432,14 @@ namespace SqlSugar
public virtual ISugarQueryable<T> Queryable<T>(ISugarQueryable<T> queryable)
{
var sqlobj = queryable.ToSql();
var QueryBuilder = queryable.QueryBuilder;
var newQueryable = this.SqlQueryable<object>(sqlobj.Key).AddParameters(sqlobj.Value);
var result = newQueryable.Select<T>(newQueryable.QueryBuilder.SelectValue+"");
result.QueryBuilder.IsSqlQuery = false;
result.QueryBuilder.NoCheckInclude = true;
result.QueryBuilder.WhereIndex = (QueryBuilder.WhereIndex + 1);
var appendIndex = result.QueryBuilder.Parameters == null ? 1 : result.QueryBuilder.Parameters.Count + 1;
result.QueryBuilder.LambdaExpressions.ParameterIndex = (QueryBuilder.LambdaExpressions.ParameterIndex + appendIndex);
result.QueryBuilder.Includes = queryable.QueryBuilder.Includes?.ToList();
return result;
}

View File

@ -5,7 +5,7 @@ using System.Globalization;
using System.Linq;
using System.Linq.Expressions;
using System.Reflection;
using System.Text;
using System.Text;
namespace SqlSugar
{
public class ExpressionTool
@ -878,7 +878,24 @@ namespace SqlSugar
additem.ShortName = member.Expression + "";
additem.RightName = member.Member.Name;
additem.RightDbName = context.GetDbColumnName(entityName, additem.RightName);
var isNavMember = member.Expression != null
&& ExpressionTool.IsNavMember(context, member.Expression);
additem.LeftNameName = member.Member.Name;
if (isNavMember && (context?.SugarContext?.QueryBuilder?.JoinQueryInfos?.Count()??0)==0)
{
var exp = context.GetCopyContextWithMapping();
exp.Resolve(member, ResolveExpressType.FieldSingle);
var sql = exp.Result.GetResultString();
if (context.IsSingle&& context.CurrentShortName.IsNullOrEmpty())
{
context.SingleTableNameSubqueryShortName=ExpressionTool.GetParameters(member)?.FirstOrDefault()?.Name;
}
additem.RightDbName = sql;
}
else if (isNavMember && context?.SugarContext?.QueryBuilder?.JoinQueryInfos?.Any(it=>it.ShortName?.StartsWith("pnv_" + ExpressionTool.GetMemberName(member.Expression)) ==true)==true)
{
additem.ShortName = "pnv_"+ExpressionTool.GetMemberName(member.Expression);
}
//additem.Value = "";
result.Add(additem);
}

View File

@ -69,6 +69,7 @@ namespace SqlSugar
{
var isLeft = parameter.IsLeft;
object value = ExpressionTool.GetValue(expression.Value, this.Context);
var isNullStr = value != null && value.ObjToString() == "NULL";
value = ConvetValue(parameter, expression, value);
if (IsEnumString(value))
value = ConvertEnum(value);
@ -116,6 +117,11 @@ namespace SqlSugar
parameter.BaseParameter.ValueIsNull = true;
value = this.Context.DbMehtods.Null();
}
if (isNullStr)
{
this.Context.Result.Append(AppendParameter(value));
break;
}
AppendValue(parameter, isLeft, value);
}
break;

View File

@ -49,8 +49,8 @@ namespace SqlSugar
BindingFlags flag = BindingFlags.Instance | BindingFlags.NonPublic;
Type type = this.Context.SubTableType;
var isWhere = HasWhere;
if (db.QueryFilter.GeFilterList != null) {
foreach (var item in db.QueryFilter.GeFilterList)
if (db.QueryFilter.GetFilterList != null) {
foreach (var item in db.QueryFilter.GetFilterList)
{
PropertyInfo field = item.GetType().GetProperty("exp", flag);
if (field != null)

View File

@ -9,6 +9,6 @@ namespace SqlSugar
{
IFilter Add(SqlFilterItem filter);
void Remove(string filterName);
List<SqlFilterItem> GeFilterList { get; }
List<SqlFilterItem> GetFilterList { get; }
}
}

View File

@ -606,6 +606,10 @@ namespace SqlSugar
return result;
}
}
else if (value is byte[] bytes&&bytes.Length==1&& destinationType == typeof(char))
{
return (char)(bytes)[0];
}
var destinationConverter = TypeDescriptor.GetConverter(destinationType);
if (destinationConverter != null && destinationConverter.CanConvertFrom(value.GetType()))
return destinationConverter.ConvertFrom(null, culture, value);