mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-09-19 10:08:19 +08:00
-
This commit is contained in:
@@ -10,7 +10,7 @@ namespace SqlSugar
|
|||||||
protected List<T> GetEntityList<T>(SqlSugarClient context, IDataReader dataReader, string fields)
|
protected List<T> GetEntityList<T>(SqlSugarClient context, IDataReader dataReader, string fields)
|
||||||
{
|
{
|
||||||
Type type = typeof(T);
|
Type type = typeof(T);
|
||||||
string key = "DataReaderToList." + fields + context.CurrentConnectionConfig.DbType + type.FullName;
|
string key = "DataReaderToList." + fields+ dataReader.FieldCount+ context.CurrentConnectionConfig.DbType + type.FullName;
|
||||||
IDataReaderEntityBuilder<T> entytyList = context.Utilities.GetReflectionInoCacheInstance().GetOrCreate(key, () =>
|
IDataReaderEntityBuilder<T> entytyList = context.Utilities.GetReflectionInoCacheInstance().GetOrCreate(key, () =>
|
||||||
{
|
{
|
||||||
var cacheResult = new IDataReaderEntityBuilder<T>(context, dataReader).CreateBuilder(type);
|
var cacheResult = new IDataReaderEntityBuilder<T>(context, dataReader).CreateBuilder(type);
|
||||||
|
@@ -209,7 +209,8 @@ namespace SqlSugar
|
|||||||
List<SugarParameter> paramters = new List<SugarParameter>();
|
List<SugarParameter> paramters = new List<SugarParameter>();
|
||||||
queryable.SqlBuilder.QueryBuilder.JoinQueryInfos = this.GetJoinInfos(queryable.SqlBuilder, joinExpression, ref paramters, ref shortName, types);
|
queryable.SqlBuilder.QueryBuilder.JoinQueryInfos = this.GetJoinInfos(queryable.SqlBuilder, joinExpression, ref paramters, ref shortName, types);
|
||||||
queryable.SqlBuilder.QueryBuilder.TableShortName = shortName;
|
queryable.SqlBuilder.QueryBuilder.TableShortName = shortName;
|
||||||
if (paramters != null) {
|
if (paramters != null)
|
||||||
|
{
|
||||||
queryable.SqlBuilder.QueryBuilder.Parameters.AddRange(paramters);
|
queryable.SqlBuilder.QueryBuilder.Parameters.AddRange(paramters);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -232,7 +233,7 @@ namespace SqlSugar
|
|||||||
expressionContext.MappingTables = this.Context.MappingTables;
|
expressionContext.MappingTables = this.Context.MappingTables;
|
||||||
expressionContext.Resolve(joinExpression, ResolveExpressType.Join);
|
expressionContext.Resolve(joinExpression, ResolveExpressType.Join);
|
||||||
int i = 0;
|
int i = 0;
|
||||||
var joinArray = expressionContext.Result.GetResultArray();
|
var joinArray = MergeJoinArray(expressionContext.Result.GetResultArray());
|
||||||
parameters = expressionContext.Parameters;
|
parameters = expressionContext.Parameters;
|
||||||
foreach (var entityType in entityTypeArray)
|
foreach (var entityType in entityTypeArray)
|
||||||
{
|
{
|
||||||
@@ -265,6 +266,37 @@ namespace SqlSugar
|
|||||||
expressionContext.Clear();
|
expressionContext.Clear();
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private string[] MergeJoinArray(string[] joinArray)
|
||||||
|
{
|
||||||
|
List<string> result = new List<string>();
|
||||||
|
string joinValue = null;
|
||||||
|
int i = 0;
|
||||||
|
foreach (var item in joinArray)
|
||||||
|
{
|
||||||
|
++i;
|
||||||
|
var isLast = joinArray.Length == i;
|
||||||
|
var isJoinType = item.IsIn(JoinType.Inner.ToString(), JoinType.Left.ToString(), JoinType.Right.ToString());
|
||||||
|
if (isJoinType)
|
||||||
|
{
|
||||||
|
if (joinValue != null)
|
||||||
|
result.Add(joinValue);
|
||||||
|
joinValue = null;
|
||||||
|
result.Add(item);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
isJoinType = false;
|
||||||
|
joinValue += joinValue==null?item:(","+item);
|
||||||
|
}
|
||||||
|
if (isLast)
|
||||||
|
{
|
||||||
|
result.Add(joinValue);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result.ToArray(); ;
|
||||||
|
}
|
||||||
|
|
||||||
protected Dictionary<string, string> GetEasyJoinInfo(Expression joinExpression, ref string shortName, ISqlBuilder builder, params Type[] entityTypeArray)
|
protected Dictionary<string, string> GetEasyJoinInfo(Expression joinExpression, ref string shortName, ISqlBuilder builder, params Type[] entityTypeArray)
|
||||||
{
|
{
|
||||||
Dictionary<string, string> result = new Dictionary<string, string>();
|
Dictionary<string, string> result = new Dictionary<string, string>();
|
||||||
|
Reference in New Issue
Block a user