mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-09-22 20:13:41 +08:00
Synchronization code
This commit is contained in:
@@ -928,6 +928,7 @@ namespace SqlSugar
|
||||
result.SqlBuilder.QueryBuilder.Parameters = QueryBuilder.Parameters;
|
||||
result.SqlBuilder.QueryBuilder.SelectValue = expression;
|
||||
result.SqlBuilder.QueryBuilder.IsSelectSingleFiledJson = UtilMethods.IsJsonMember(expression, this.Context);
|
||||
result.SqlBuilder.QueryBuilder.IsSelectSingleFiledArray = UtilMethods.IsArrayMember(expression, this.Context);
|
||||
if (this.IsCache)
|
||||
{
|
||||
result.WithCache(this.CacheTime);
|
||||
@@ -1192,6 +1193,10 @@ namespace SqlSugar
|
||||
{
|
||||
result = this.Context.Utilities.DataReaderToSelectJsonList<TResult>(dataReader);
|
||||
}
|
||||
else if (QueryBuilder.IsSelectSingleFiledArray)
|
||||
{
|
||||
result = this.Context.Utilities.DataReaderToSelectArrayList<TResult>(dataReader);
|
||||
}
|
||||
else if (entityType.IsAnonymousType() || isComplexModel)
|
||||
{
|
||||
result = this.Context.Utilities.DataReaderToList<TResult>(dataReader);
|
||||
|
@@ -36,6 +36,7 @@ namespace SqlSugar
|
||||
public bool IsCrossQueryWithAttr { get; set; }
|
||||
public Dictionary<string,string> CrossQueryItems { get; set; }
|
||||
public bool IsSelectSingleFiledJson { get; set; }
|
||||
public bool IsSelectSingleFiledArray { get; set; }
|
||||
public string TranLock { get; set; }
|
||||
public bool IsDisableMasterSlaveSeparation { get; set; }
|
||||
public bool IsEnableMasterSlaveSeparation { get; set; }
|
||||
|
@@ -358,6 +358,11 @@ namespace SqlSugar
|
||||
result = true;
|
||||
break;
|
||||
}
|
||||
else if (memberExpr.Expression is BinaryExpression&&(memberExpr.Expression as BinaryExpression).NodeType==ExpressionType.ArrayIndex)
|
||||
{
|
||||
result = true;
|
||||
break;
|
||||
}
|
||||
memberExpr = memberExpr.Expression as MemberExpression;
|
||||
}
|
||||
return result;
|
||||
|
@@ -226,6 +226,27 @@ namespace SqlSugar
|
||||
return result;
|
||||
}
|
||||
|
||||
public List<T> DataReaderToSelectArrayList<T>(IDataReader dataReader)
|
||||
{
|
||||
List<T> result = new List<T>();
|
||||
using (dataReader)
|
||||
{
|
||||
while (dataReader.Read())
|
||||
{
|
||||
var value = dataReader.GetValue(0);
|
||||
if (value == null || value == DBNull.Value)
|
||||
{
|
||||
result.Add(default(T));
|
||||
}
|
||||
else
|
||||
{
|
||||
result.Add((T)value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
/// <summary>
|
||||
/// DataReaderToList
|
||||
/// </summary>
|
||||
|
@@ -18,6 +18,7 @@ namespace SqlSugar
|
||||
Task<List<ExpandoObject>> DataReaderToExpandoObjectListAsyncNoUsing(IDataReader dataReader);
|
||||
List<T> DataReaderToList<T>(IDataReader reader);
|
||||
List<T> DataReaderToSelectJsonList<T>(IDataReader reader);
|
||||
List<T> DataReaderToSelectArrayList<T>(IDataReader reader);
|
||||
Task<List<T>> DataReaderToSelectJsonListAsync<T>(IDataReader reader);
|
||||
List<T> DataReaderToListNoUsing<T>(IDataReader reader);
|
||||
Task<List<T>> DataReaderToListAsync<T>(IDataReader dataReader);
|
||||
|
@@ -28,7 +28,24 @@ namespace SqlSugar
|
||||
return string.Concat(str.Select((x, i) => i > 0 && char.IsUpper(x) ? "_" + x.ToString() : x.ToString())).ToLower();
|
||||
}
|
||||
}
|
||||
|
||||
internal static bool IsArrayMember(Expression expression, SqlSugarProvider context)
|
||||
{
|
||||
if (expression == null)
|
||||
return false;
|
||||
if (!(expression is LambdaExpression))
|
||||
return false;
|
||||
var lambda = (LambdaExpression)expression;
|
||||
if (!(lambda.Body is MemberExpression))
|
||||
return false;
|
||||
var member = lambda.Body as MemberExpression;
|
||||
if (!(member.Type.IsClass()))
|
||||
return false;
|
||||
if (member.Expression == null)
|
||||
return false;
|
||||
var entity = context.EntityMaintenance.GetEntityInfo(member.Expression.Type);
|
||||
var json = entity.Columns.FirstOrDefault(z => z.IsArray && z.PropertyName == member.Member.Name);
|
||||
return json != null;
|
||||
}
|
||||
internal static bool IsJsonMember(Expression expression, SqlSugarProvider context)
|
||||
{
|
||||
if (expression == null)
|
||||
|
Reference in New Issue
Block a user