mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-08-01 10:10:16 +08:00
Merge pull
This commit is contained in:
parent
d381d3da09
commit
33c8a34b4e
@ -501,6 +501,71 @@ namespace SqlSugar
|
||||
queryable.QueryBuilder.JoinQueryInfos.Add(new JoinQueryInfo() { JoinIndex = 1, JoinType = joinType2, JoinWhere = exp2.GetResultString(), TableName = sqlBuilder.GetPackTable(sql3, shortName3) });
|
||||
return queryable;
|
||||
}
|
||||
|
||||
public virtual ISugarQueryable<T, T2, T3,T4> Queryable<T, T2, T3,T4>(
|
||||
ISugarQueryable<T> joinQueryable1, ISugarQueryable<T2> joinQueryable2, ISugarQueryable<T3> joinQueryable3, ISugarQueryable<T4> joinQueryable4,
|
||||
JoinType joinType1, Expression<Func<T, T2, T3, T4, bool>> joinExpression1,
|
||||
JoinType joinType2, Expression<Func<T, T2, T3, T4, bool>> joinExpression2,
|
||||
JoinType joinType3, Expression<Func<T, T2, T3,T4, bool>> joinExpression3
|
||||
) where T : class, new() where T2 : class, new() where T3 : class, new() where T4 : class, new()
|
||||
{
|
||||
Check.Exception(joinQueryable1.QueryBuilder.Take != null || joinQueryable1.QueryBuilder.Skip != null || joinQueryable1.QueryBuilder.OrderByValue.HasValue(), "joinQueryable1 Cannot have 'Skip' 'ToPageList' 'Take' Or 'OrderBy'");
|
||||
Check.Exception(joinQueryable2.QueryBuilder.Take != null || joinQueryable2.QueryBuilder.Skip != null || joinQueryable2.QueryBuilder.OrderByValue.HasValue(), "joinQueryable2 Cannot have 'Skip' 'ToPageList' 'Take' Or 'OrderBy'");
|
||||
Check.Exception(joinQueryable3.QueryBuilder.Take != null || joinQueryable3.QueryBuilder.Skip != null || joinQueryable3.QueryBuilder.OrderByValue.HasValue(), "joinQueryable3 Cannot have 'Skip' 'ToPageList' 'Take' Or 'OrderBy'");
|
||||
Check.Exception(joinQueryable4.QueryBuilder.Take != null || joinQueryable4.QueryBuilder.Skip != null || joinQueryable4.QueryBuilder.OrderByValue.HasValue(), "joinQueryable4 Cannot have 'Skip' 'ToPageList' 'Take' Or 'OrderBy'");
|
||||
var sqlBuilder = InstanceFactory.GetSqlbuilder(this.Context.CurrentConnectionConfig);
|
||||
|
||||
sqlBuilder.Context = this;
|
||||
InitMappingInfo<T, T2, T3,T4>();
|
||||
var types = new Type[] { typeof(T2) };
|
||||
var queryable = InstanceFactory.GetQueryable<T, T2, T3,T4>(this.CurrentConnectionConfig);
|
||||
queryable.Context = this.Context;
|
||||
queryable.SqlBuilder = sqlBuilder;
|
||||
queryable.QueryBuilder = InstanceFactory.GetQueryBuilder(this.CurrentConnectionConfig);
|
||||
queryable.QueryBuilder.JoinQueryInfos = new List<JoinQueryInfo>();
|
||||
queryable.QueryBuilder.Builder = sqlBuilder;
|
||||
queryable.QueryBuilder.Context = this;
|
||||
queryable.QueryBuilder.EntityType = typeof(T);
|
||||
queryable.QueryBuilder.LambdaExpressions = InstanceFactory.GetLambdaExpressions(this.CurrentConnectionConfig);
|
||||
|
||||
//master
|
||||
var shortName1 = joinExpression1.Parameters[0].Name;
|
||||
var sqlObj1 = joinQueryable1.ToSql();
|
||||
string sql1 = sqlObj1.Key;
|
||||
UtilMethods.RepairReplicationParameters(ref sql1, sqlObj1.Value.ToArray(), 0, "Join");
|
||||
queryable.QueryBuilder.EntityName = sqlBuilder.GetPackTable(sql1, shortName1); ;
|
||||
queryable.QueryBuilder.Parameters.AddRange(sqlObj1.Value);
|
||||
|
||||
//join table 1
|
||||
var shortName2 = joinExpression1.Parameters[1].Name;
|
||||
var sqlObj2 = joinQueryable2.ToSql();
|
||||
string sql2 = sqlObj2.Key;
|
||||
UtilMethods.RepairReplicationParameters(ref sql2, sqlObj2.Value.ToArray(), 1, "Join");
|
||||
queryable.QueryBuilder.Parameters.AddRange(sqlObj2.Value);
|
||||
var exp = queryable.QueryBuilder.GetExpressionValue(joinExpression1, ResolveExpressType.WhereMultiple);
|
||||
queryable.QueryBuilder.JoinQueryInfos.Add(new JoinQueryInfo() { JoinIndex = 0, JoinType = joinType1, JoinWhere = exp.GetResultString(), TableName = sqlBuilder.GetPackTable(sql2, shortName2) });
|
||||
|
||||
|
||||
//join table 2
|
||||
var shortName3 = joinExpression1.Parameters[2].Name;
|
||||
var sqlObj3 = joinQueryable3.ToSql();
|
||||
string sql3 = sqlObj3.Key;
|
||||
UtilMethods.RepairReplicationParameters(ref sql3, sqlObj3.Value.ToArray(), 2, "Join");
|
||||
queryable.QueryBuilder.Parameters.AddRange(sqlObj3.Value);
|
||||
var exp2 = queryable.QueryBuilder.GetExpressionValue(joinExpression2, ResolveExpressType.WhereMultiple);
|
||||
queryable.QueryBuilder.JoinQueryInfos.Add(new JoinQueryInfo() { JoinIndex = 1, JoinType = joinType2, JoinWhere = exp2.GetResultString(), TableName = sqlBuilder.GetPackTable(sql3, shortName3) });
|
||||
|
||||
//join table 3
|
||||
var shortName4 = joinExpression1.Parameters[3].Name;
|
||||
var sqlObj4 = joinQueryable4.ToSql();
|
||||
string sql4 = sqlObj4.Key;
|
||||
UtilMethods.RepairReplicationParameters(ref sql4, sqlObj4.Value.ToArray(), 3, "Join");
|
||||
queryable.QueryBuilder.Parameters.AddRange(sqlObj4.Value);
|
||||
var exp3 = queryable.QueryBuilder.GetExpressionValue(joinExpression3, ResolveExpressType.WhereMultiple);
|
||||
queryable.QueryBuilder.JoinQueryInfos.Add(new JoinQueryInfo() { JoinIndex = 1, JoinType = joinType3, JoinWhere = exp3.GetResultString(), TableName = sqlBuilder.GetPackTable(sql4, shortName4) });
|
||||
|
||||
return queryable;
|
||||
}
|
||||
#endregion
|
||||
|
||||
public virtual ISugarQueryable<T> UnionAll<T>(params ISugarQueryable<T>[] queryables) where T : class, new()
|
||||
|
@ -7,7 +7,7 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace SqlSugar
|
||||
{
|
||||
public interface ISqlSugarClient: IDisposable
|
||||
public interface ISqlSugarClient : IDisposable
|
||||
{
|
||||
MappingTableList MappingTables { get; set; }
|
||||
MappingColumnList MappingColumns { get; set; }
|
||||
@ -25,7 +25,7 @@ namespace SqlSugar
|
||||
AopProvider Aop { get; }
|
||||
ICodeFirst CodeFirst { get; }
|
||||
|
||||
|
||||
|
||||
IDbFirst DbFirst { get; }
|
||||
IDbMaintenance DbMaintenance { get; }
|
||||
EntityMaintenance EntityMaintenance { get; set; }
|
||||
@ -109,12 +109,20 @@ namespace SqlSugar
|
||||
where T2 : class, new();
|
||||
|
||||
ISugarQueryable<T, T2, T3> Queryable<T, T2, T3>(ISugarQueryable<T> joinQueryable1, ISugarQueryable<T2> joinQueryable2, ISugarQueryable<T3> joinQueryable3,
|
||||
JoinType joinType1, Expression<Func<T, T2,T3, bool>> joinExpression1,
|
||||
JoinType joinType2, Expression<Func<T, T2,T3, bool>> joinExpression2)
|
||||
where T: class, new()
|
||||
where T2 : class, new()
|
||||
JoinType joinType1, Expression<Func<T, T2, T3, bool>> joinExpression1,
|
||||
JoinType joinType2, Expression<Func<T, T2, T3, bool>> joinExpression2)
|
||||
where T : class, new()
|
||||
where T2 : class, new()
|
||||
where T3 : class, new();
|
||||
|
||||
ISugarQueryable<T, T2, T3, T4> Queryable<T, T2, T3, T4>(ISugarQueryable<T> joinQueryable1, ISugarQueryable<T2> joinQueryable2, ISugarQueryable<T3> joinQueryable3, ISugarQueryable<T4> joinQueryable4,
|
||||
JoinType joinType1, Expression<Func<T, T2, T3, T4, bool>> joinExpression1,
|
||||
JoinType joinType2, Expression<Func<T, T2, T3, T4, bool>> joinExpression2,
|
||||
JoinType joinType3, Expression<Func<T, T2, T3, T4, bool>> joinExpression4)
|
||||
where T : class, new()
|
||||
where T2 : class, new()
|
||||
where T3 : class, new()
|
||||
where T4 : class, new();
|
||||
ISugarQueryable<T> Queryable<T>();
|
||||
ISugarQueryable<T> Queryable<T>(ISugarQueryable<T> queryable) where T : class, new();
|
||||
ISugarQueryable<T> Queryable<T>(string shortName);
|
||||
@ -150,7 +158,7 @@ namespace SqlSugar
|
||||
Task<Tuple<List<T>, List<T2>, List<T3>, List<T4>>> SaveQueuesAsync<T, T2, T3, T4>(bool isTran = true);
|
||||
Task<Tuple<List<T>, List<T2>, List<T3>>> SaveQueuesAsync<T, T2, T3>(bool isTran = true);
|
||||
Task<Tuple<List<T>, List<T2>>> SaveQueuesAsync<T, T2>(bool isTran = true);
|
||||
Task<List<T>> SaveQueuesAsync<T>(bool isTran = true);
|
||||
Task<List<T>> SaveQueuesAsync<T>(bool isTran = true);
|
||||
#endregion
|
||||
|
||||
#region Union
|
||||
|
@ -410,6 +410,27 @@
|
||||
<None Include="packages.config" />
|
||||
<None Include="SqlSugar.nuspec" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Folder Include="Abstract\AdoProvider\Abstract\AdoProvider\" />
|
||||
<Folder Include="Abstract\AdoProvider\Abstract\AopProvider\" />
|
||||
<Folder Include="Abstract\AdoProvider\Abstract\CacheProvider\" />
|
||||
<Folder Include="Abstract\AdoProvider\Abstract\CodeFirstProvider\" />
|
||||
<Folder Include="Abstract\AdoProvider\Abstract\DbBindProvider\" />
|
||||
<Folder Include="Abstract\AdoProvider\Abstract\DbFirstProvider\" />
|
||||
<Folder Include="Abstract\AdoProvider\Abstract\DbMaintenanceProvider\" />
|
||||
<Folder Include="Abstract\AdoProvider\Abstract\DeleteProvider\" />
|
||||
<Folder Include="Abstract\AdoProvider\Abstract\EntityMaintenance\" />
|
||||
<Folder Include="Abstract\AdoProvider\Abstract\ExpressionableProvider\" />
|
||||
<Folder Include="Abstract\AdoProvider\Abstract\FastestProvider\" />
|
||||
<Folder Include="Abstract\AdoProvider\Abstract\FilterProvider\" />
|
||||
<Folder Include="Abstract\AdoProvider\Abstract\InsertableProvider\" />
|
||||
<Folder Include="Abstract\AdoProvider\Abstract\QueryableProvider\" />
|
||||
<Folder Include="Abstract\AdoProvider\Abstract\Reportable\" />
|
||||
<Folder Include="Abstract\AdoProvider\Abstract\SaveableProvider\" />
|
||||
<Folder Include="Abstract\AdoProvider\Abstract\SqlBuilderProvider\" />
|
||||
<Folder Include="Abstract\AdoProvider\Abstract\SugarProvider\" />
|
||||
<Folder Include="Abstract\AdoProvider\Abstract\UpdateProvider\" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
|
@ -321,7 +321,17 @@ namespace SqlSugar
|
||||
{
|
||||
return this.Context.Queryable(joinQueryable1, joinQueryable2, joinQueryable3, joinType1, joinExpression1, joinType2, joinExpression2).With(SqlWith.Null);
|
||||
}
|
||||
|
||||
public ISugarQueryable<T, T2, T3,T4> Queryable<T, T2, T3, T4>(ISugarQueryable<T> joinQueryable1, ISugarQueryable<T2> joinQueryable2, ISugarQueryable<T3> joinQueryable3, ISugarQueryable<T4> joinQueryable4,
|
||||
JoinType joinType1, Expression<Func<T, T2, T3,T4, bool>> joinExpression1,
|
||||
JoinType joinType2, Expression<Func<T, T2, T3, T4, bool>> joinExpression2,
|
||||
JoinType joinType3, Expression<Func<T, T2, T3, T4, bool>> joinExpression3)
|
||||
where T : class, new()
|
||||
where T2 : class, new()
|
||||
where T3 : class, new()
|
||||
where T4 : class ,new ()
|
||||
{
|
||||
return this.Context.Queryable(joinQueryable1, joinQueryable2, joinQueryable3, joinQueryable4, joinType1, joinExpression1, joinType2, joinExpression2,joinType3, joinExpression3).With(SqlWith.Null);
|
||||
}
|
||||
|
||||
public ISugarQueryable<T> Queryable<T>()
|
||||
{
|
||||
|
@ -400,7 +400,14 @@ namespace SqlSugar
|
||||
{
|
||||
return ScopedContext.Queryable(joinQueryable1, joinQueryable2, joinQueryable3,joinType1,joinExpression1,joinType2,joinExpression2);
|
||||
}
|
||||
|
||||
public ISugarQueryable<T, T2, T3,T4> Queryable<T, T2, T3, T4>(ISugarQueryable<T> joinQueryable1, ISugarQueryable<T2> joinQueryable2, ISugarQueryable<T3> joinQueryable3, ISugarQueryable<T4> joinQueryable4, JoinType joinType1, Expression<Func<T, T2, T3, T4, bool>> joinExpression1, JoinType joinType2, Expression<Func<T, T2, T3, T4, bool>> joinExpression2, JoinType joinType3, Expression<Func<T, T2, T3, T4, bool>> joinExpression3)
|
||||
where T : class, new()
|
||||
where T2 : class, new()
|
||||
where T3 : class, new()
|
||||
where T4 : class, new()
|
||||
{
|
||||
return ScopedContext.Queryable(joinQueryable1, joinQueryable2, joinQueryable3, joinQueryable4, joinType1, joinExpression1, joinType2, joinExpression2, joinType3, joinExpression3);
|
||||
}
|
||||
public ISugarQueryable<T> Queryable<T>()
|
||||
{
|
||||
return ScopedContext.Queryable<T>();
|
||||
|
Loading…
Reference in New Issue
Block a user