mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-09-24 04:53:45 +08:00
Synchronization code
This commit is contained in:
@@ -928,6 +928,7 @@ namespace SqlSugar
|
|||||||
result.SqlBuilder.QueryBuilder.Parameters = QueryBuilder.Parameters;
|
result.SqlBuilder.QueryBuilder.Parameters = QueryBuilder.Parameters;
|
||||||
result.SqlBuilder.QueryBuilder.SelectValue = expression;
|
result.SqlBuilder.QueryBuilder.SelectValue = expression;
|
||||||
result.SqlBuilder.QueryBuilder.IsSelectSingleFiledJson = UtilMethods.IsJsonMember(expression, this.Context);
|
result.SqlBuilder.QueryBuilder.IsSelectSingleFiledJson = UtilMethods.IsJsonMember(expression, this.Context);
|
||||||
|
result.SqlBuilder.QueryBuilder.IsSelectSingleFiledArray = UtilMethods.IsArrayMember(expression, this.Context);
|
||||||
if (this.IsCache)
|
if (this.IsCache)
|
||||||
{
|
{
|
||||||
result.WithCache(this.CacheTime);
|
result.WithCache(this.CacheTime);
|
||||||
@@ -1192,6 +1193,10 @@ namespace SqlSugar
|
|||||||
{
|
{
|
||||||
result = this.Context.Utilities.DataReaderToSelectJsonList<TResult>(dataReader);
|
result = this.Context.Utilities.DataReaderToSelectJsonList<TResult>(dataReader);
|
||||||
}
|
}
|
||||||
|
else if (QueryBuilder.IsSelectSingleFiledArray)
|
||||||
|
{
|
||||||
|
result = this.Context.Utilities.DataReaderToSelectArrayList<TResult>(dataReader);
|
||||||
|
}
|
||||||
else if (entityType.IsAnonymousType() || isComplexModel)
|
else if (entityType.IsAnonymousType() || isComplexModel)
|
||||||
{
|
{
|
||||||
result = this.Context.Utilities.DataReaderToList<TResult>(dataReader);
|
result = this.Context.Utilities.DataReaderToList<TResult>(dataReader);
|
||||||
|
@@ -36,6 +36,7 @@ namespace SqlSugar
|
|||||||
public bool IsCrossQueryWithAttr { get; set; }
|
public bool IsCrossQueryWithAttr { get; set; }
|
||||||
public Dictionary<string,string> CrossQueryItems { get; set; }
|
public Dictionary<string,string> CrossQueryItems { get; set; }
|
||||||
public bool IsSelectSingleFiledJson { get; set; }
|
public bool IsSelectSingleFiledJson { get; set; }
|
||||||
|
public bool IsSelectSingleFiledArray { get; set; }
|
||||||
public string TranLock { get; set; }
|
public string TranLock { get; set; }
|
||||||
public bool IsDisableMasterSlaveSeparation { get; set; }
|
public bool IsDisableMasterSlaveSeparation { get; set; }
|
||||||
public bool IsEnableMasterSlaveSeparation { get; set; }
|
public bool IsEnableMasterSlaveSeparation { get; set; }
|
||||||
|
@@ -358,6 +358,11 @@ namespace SqlSugar
|
|||||||
result = true;
|
result = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
else if (memberExpr.Expression is BinaryExpression&&(memberExpr.Expression as BinaryExpression).NodeType==ExpressionType.ArrayIndex)
|
||||||
|
{
|
||||||
|
result = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
memberExpr = memberExpr.Expression as MemberExpression;
|
memberExpr = memberExpr.Expression as MemberExpression;
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
|
@@ -226,6 +226,27 @@ namespace SqlSugar
|
|||||||
return result;
|
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>
|
/// <summary>
|
||||||
/// DataReaderToList
|
/// DataReaderToList
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@@ -18,6 +18,7 @@ namespace SqlSugar
|
|||||||
Task<List<ExpandoObject>> DataReaderToExpandoObjectListAsyncNoUsing(IDataReader dataReader);
|
Task<List<ExpandoObject>> DataReaderToExpandoObjectListAsyncNoUsing(IDataReader dataReader);
|
||||||
List<T> DataReaderToList<T>(IDataReader reader);
|
List<T> DataReaderToList<T>(IDataReader reader);
|
||||||
List<T> DataReaderToSelectJsonList<T>(IDataReader reader);
|
List<T> DataReaderToSelectJsonList<T>(IDataReader reader);
|
||||||
|
List<T> DataReaderToSelectArrayList<T>(IDataReader reader);
|
||||||
Task<List<T>> DataReaderToSelectJsonListAsync<T>(IDataReader reader);
|
Task<List<T>> DataReaderToSelectJsonListAsync<T>(IDataReader reader);
|
||||||
List<T> DataReaderToListNoUsing<T>(IDataReader reader);
|
List<T> DataReaderToListNoUsing<T>(IDataReader reader);
|
||||||
Task<List<T>> DataReaderToListAsync<T>(IDataReader dataReader);
|
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();
|
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)
|
internal static bool IsJsonMember(Expression expression, SqlSugarProvider context)
|
||||||
{
|
{
|
||||||
if (expression == null)
|
if (expression == null)
|
||||||
|
Reference in New Issue
Block a user