This commit is contained in:
skx 2020-10-14 14:44:48 +08:00
parent 0a1f788901
commit 185e5349fc

View File

@ -15,7 +15,7 @@ namespace SqlSugar
/// ** date2017/1/2 /// ** date2017/1/2
/// ** email:610262374@qq.com /// ** email:610262374@qq.com
/// </summary> /// </summary>
public partial class SqlSugarProvider: ISqlSugarClient public partial class SqlSugarProvider : ISqlSugarClient
{ {
#region Constructor #region Constructor
@ -139,7 +139,7 @@ namespace SqlSugar
this.CreateQueryJoin(joinExpression, types, queryable); this.CreateQueryJoin(joinExpression, types, queryable);
return queryable; return queryable;
} }
public virtual ISugarQueryable<T, T2, T3> Queryable<T, T2, T3>(Expression<Func<T, T2, T3,JoinQueryInfos>> joinExpression) public virtual ISugarQueryable<T, T2, T3> Queryable<T, T2, T3>(Expression<Func<T, T2, T3, JoinQueryInfos>> joinExpression)
{ {
InitMappingInfo<T, T2, T3>(); InitMappingInfo<T, T2, T3>();
var types = new Type[] { typeof(T2), typeof(T3) }; var types = new Type[] { typeof(T2), typeof(T3) };
@ -155,7 +155,7 @@ namespace SqlSugar
this.CreateQueryJoin(joinExpression, types, queryable); this.CreateQueryJoin(joinExpression, types, queryable);
return queryable; return queryable;
} }
public virtual ISugarQueryable<T, T2, T3, T4> Queryable<T, T2, T3, T4>(Expression<Func<T, T2, T3, T4,JoinQueryInfos>> joinExpression) public virtual ISugarQueryable<T, T2, T3, T4> Queryable<T, T2, T3, T4>(Expression<Func<T, T2, T3, T4, JoinQueryInfos>> joinExpression)
{ {
InitMappingInfo<T, T2, T3, T4>(); InitMappingInfo<T, T2, T3, T4>();
var types = new Type[] { typeof(T2), typeof(T3), typeof(T4) }; var types = new Type[] { typeof(T2), typeof(T3), typeof(T4) };
@ -171,7 +171,7 @@ namespace SqlSugar
this.CreateQueryJoin(joinExpression, types, queryable); this.CreateQueryJoin(joinExpression, types, queryable);
return queryable; return queryable;
} }
public virtual ISugarQueryable<T, T2, T3, T4, T5> Queryable<T, T2, T3, T4, T5>(Expression<Func<T, T2, T3, T4, T5,JoinQueryInfos>> joinExpression) public virtual ISugarQueryable<T, T2, T3, T4, T5> Queryable<T, T2, T3, T4, T5>(Expression<Func<T, T2, T3, T4, T5, JoinQueryInfos>> joinExpression)
{ {
InitMappingInfo<T, T2, T3, T4, T5>(); InitMappingInfo<T, T2, T3, T4, T5>();
var types = new Type[] { typeof(T2), typeof(T3), typeof(T4), typeof(T5) }; var types = new Type[] { typeof(T2), typeof(T3), typeof(T4), typeof(T5) };
@ -268,7 +268,7 @@ namespace SqlSugar
this.CreateQueryJoin(joinExpression, types, queryable); this.CreateQueryJoin(joinExpression, types, queryable);
return queryable; return queryable;
} }
public virtual ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> Queryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>(Expression<Func<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,JoinQueryInfos>> joinExpression) public virtual ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> Queryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>(Expression<Func<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, JoinQueryInfos>> joinExpression)
{ {
InitMappingInfo<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>(); InitMappingInfo<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>();
var types = new Type[] { typeof(T2), typeof(T3), typeof(T4), typeof(T5), typeof(T6), typeof(T7), typeof(T8), typeof(T9), typeof(T10), typeof(T11) }; var types = new Type[] { typeof(T2), typeof(T3), typeof(T4), typeof(T5), typeof(T6), typeof(T7), typeof(T8), typeof(T9), typeof(T10), typeof(T11) };
@ -467,7 +467,14 @@ namespace SqlSugar
var allParameters = allItems.SelectMany(it => it.Value).ToArray(); var allParameters = allItems.SelectMany(it => it.Value).ToArray();
var resulut = this.Context.Queryable<ExpandoObject>().AS(UtilMethods.GetPackTable(allSql, "unionTable")).With(SqlWith.Null); var resulut = this.Context.Queryable<ExpandoObject>().AS(UtilMethods.GetPackTable(allSql, "unionTable")).With(SqlWith.Null);
resulut.AddParameters(allParameters); resulut.AddParameters(allParameters);
return resulut.Select<T>(sqlBuilder.SqlSelectAll); if (this.Context.CurrentConnectionConfig.DbType == DbType.Oracle && sqlBuilder.SqlSelectAll == "*")
{
return resulut.Select<T>("unionTable.*");
}
else
{
return resulut.Select<T>(sqlBuilder.SqlSelectAll);
}
} }
public virtual ISugarQueryable<T> UnionAll<T>(List<ISugarQueryable<T>> queryables) where T : class, new() public virtual ISugarQueryable<T> UnionAll<T>(List<ISugarQueryable<T>> queryables) where T : class, new()
{ {
@ -495,7 +502,14 @@ namespace SqlSugar
var allParameters = allItems.SelectMany(it => it.Value).ToArray(); var allParameters = allItems.SelectMany(it => it.Value).ToArray();
var resulut = this.Context.Queryable<ExpandoObject>().AS(UtilMethods.GetPackTable(allSql, "unionTable")).With(SqlWith.Null); var resulut = this.Context.Queryable<ExpandoObject>().AS(UtilMethods.GetPackTable(allSql, "unionTable")).With(SqlWith.Null);
resulut.AddParameters(allParameters); resulut.AddParameters(allParameters);
return resulut.Select<T>(sqlBuilder.SqlSelectAll); if (this.Context.CurrentConnectionConfig.DbType == DbType.Oracle && sqlBuilder.SqlSelectAll == "*")
{
return resulut.Select<T>("unionTable.*");
}
else
{
return resulut.Select<T>(sqlBuilder.SqlSelectAll);
}
} }
public virtual ISugarQueryable<T> Union<T>(List<ISugarQueryable<T>> queryables) where T : class, new() public virtual ISugarQueryable<T> Union<T>(List<ISugarQueryable<T>> queryables) where T : class, new()
{ {
@ -521,7 +535,7 @@ namespace SqlSugar
} }
public virtual IInsertable<T> Insertable<T>(List<T> insertObjs) where T : class, new() public virtual IInsertable<T> Insertable<T>(List<T> insertObjs) where T : class, new()
{ {
if (insertObjs == null|| insertObjs.IsNullOrEmpty()) if (insertObjs == null || insertObjs.IsNullOrEmpty())
{ {
insertObjs = new List<T>(); insertObjs = new List<T>();
insertObjs.Add(default(T)); insertObjs.Add(default(T));
@ -796,7 +810,7 @@ namespace SqlSugar
public async Task<int> SaveQueuesAsync(bool isTran = true) public async Task<int> SaveQueuesAsync(bool isTran = true)
{ {
return await SaveQueuesProviderAsync(isTran, (sql, parameters) => { return this.Ado.ExecuteCommandAsync(sql, parameters); }); return await SaveQueuesProviderAsync(isTran, (sql, parameters) => { return this.Ado.ExecuteCommandAsync(sql, parameters); });
} }
public List<T> SaveQueues<T>(bool isTran = true) public List<T> SaveQueues<T>(bool isTran = true)
{ {
@ -804,7 +818,7 @@ namespace SqlSugar
} }
public async Task<List<T>> SaveQueuesAsync<T>(bool isTran = true) public async Task<List<T>> SaveQueuesAsync<T>(bool isTran = true)
{ {
return await SaveQueuesProviderAsync(isTran, (sql, parameters) => { return this.Ado.SqlQueryAsync<T>(sql, parameters); }); return await SaveQueuesProviderAsync(isTran, (sql, parameters) => { return this.Ado.SqlQueryAsync<T>(sql, parameters); });
} }
public Tuple<List<T>, List<T2>> SaveQueues<T, T2>(bool isTran = true) public Tuple<List<T>, List<T2>> SaveQueues<T, T2>(bool isTran = true)
{ {
@ -812,7 +826,7 @@ namespace SqlSugar
} }
public async Task<Tuple<List<T>, List<T2>>> SaveQueuesAsync<T, T2>(bool isTran = true) public async Task<Tuple<List<T>, List<T2>>> SaveQueuesAsync<T, T2>(bool isTran = true)
{ {
return await SaveQueuesProviderAsync(isTran, (sql, parameters) => { return this.Ado.SqlQueryAsync<T, T2>(sql, parameters); }); return await SaveQueuesProviderAsync(isTran, (sql, parameters) => { return this.Ado.SqlQueryAsync<T, T2>(sql, parameters); });
} }
public Tuple<List<T>, List<T2>, List<T3>> SaveQueues<T, T2, T3>(bool isTran = true) public Tuple<List<T>, List<T2>, List<T3>> SaveQueues<T, T2, T3>(bool isTran = true)
{ {
@ -820,7 +834,7 @@ namespace SqlSugar
} }
public async Task<Tuple<List<T>, List<T2>, List<T3>>> SaveQueuesAsync<T, T2, T3>(bool isTran = true) public async Task<Tuple<List<T>, List<T2>, List<T3>>> SaveQueuesAsync<T, T2, T3>(bool isTran = true)
{ {
return await SaveQueuesProviderAsync(isTran, (sql, parameters) => { return this.Ado.SqlQueryAsync<T, T2, T3>(sql, parameters); }); return await SaveQueuesProviderAsync(isTran, (sql, parameters) => { return this.Ado.SqlQueryAsync<T, T2, T3>(sql, parameters); });
} }
public Tuple<List<T>, List<T2>, List<T3>, List<T4>> SaveQueues<T, T2, T3, T4>(bool isTran = true) public Tuple<List<T>, List<T2>, List<T3>, List<T4>> SaveQueues<T, T2, T3, T4>(bool isTran = true)
{ {
@ -828,7 +842,7 @@ namespace SqlSugar
} }
public async Task<Tuple<List<T>, List<T2>, List<T3>, List<T4>>> SaveQueuesAsync<T, T2, T3, T4>(bool isTran = true) public async Task<Tuple<List<T>, List<T2>, List<T3>, List<T4>>> SaveQueuesAsync<T, T2, T3, T4>(bool isTran = true)
{ {
return await SaveQueuesProviderAsync(isTran, (sql, parameters) => { return this.Ado.SqlQueryAsync<T, T2, T3, T4>(sql, parameters); }); return await SaveQueuesProviderAsync(isTran, (sql, parameters) => { return this.Ado.SqlQueryAsync<T, T2, T3, T4>(sql, parameters); });
} }
public Tuple<List<T>, List<T2>, List<T3>, List<T4>, List<T5>> SaveQueues<T, T2, T3, T4, T5>(bool isTran = true) public Tuple<List<T>, List<T2>, List<T3>, List<T4>, List<T5>> SaveQueues<T, T2, T3, T4, T5>(bool isTran = true)
{ {
@ -836,7 +850,7 @@ namespace SqlSugar
} }
public async Task<Tuple<List<T>, List<T2>, List<T3>, List<T4>, List<T5>>> SaveQueuesAsync<T, T2, T3, T4, T5>(bool isTran = true) public async Task<Tuple<List<T>, List<T2>, List<T3>, List<T4>, List<T5>>> SaveQueuesAsync<T, T2, T3, T4, T5>(bool isTran = true)
{ {
return await SaveQueuesProviderAsync(isTran, (sql, parameters) => { return this.Ado.SqlQueryAsync<T, T2, T3, T4, T5>(sql, parameters); }); return await SaveQueuesProviderAsync(isTran, (sql, parameters) => { return this.Ado.SqlQueryAsync<T, T2, T3, T4, T5>(sql, parameters); });
} }
public Tuple<List<T>, List<T2>, List<T3>, List<T4>, List<T5>, List<T6>> SaveQueues<T, T2, T3, T4, T5, T6>(bool isTran = true) public Tuple<List<T>, List<T2>, List<T3>, List<T4>, List<T5>, List<T6>> SaveQueues<T, T2, T3, T4, T5, T6>(bool isTran = true)
{ {
@ -844,7 +858,7 @@ namespace SqlSugar
} }
public async Task<Tuple<List<T>, List<T2>, List<T3>, List<T4>, List<T5>, List<T6>>> SaveQueuesAsync<T, T2, T3, T4, T5, T6>(bool isTran = true) public async Task<Tuple<List<T>, List<T2>, List<T3>, List<T4>, List<T5>, List<T6>>> SaveQueuesAsync<T, T2, T3, T4, T5, T6>(bool isTran = true)
{ {
return await SaveQueuesProviderAsync(isTran, (sql, parameters) => { return this.Ado.SqlQueryAsync<T, T2, T3, T4, T5, T6>(sql, parameters); }); return await SaveQueuesProviderAsync(isTran, (sql, parameters) => { return this.Ado.SqlQueryAsync<T, T2, T3, T4, T5, T6>(sql, parameters); });
} }
public Tuple<List<T>, List<T2>, List<T3>, List<T4>, List<T5>, List<T6>, List<T7>> SaveQueues<T, T2, T3, T4, T5, T6, T7>(bool isTran = true) public Tuple<List<T>, List<T2>, List<T3>, List<T4>, List<T5>, List<T6>, List<T7>> SaveQueues<T, T2, T3, T4, T5, T6, T7>(bool isTran = true)
{ {
@ -852,17 +866,17 @@ namespace SqlSugar
} }
public async Task<Tuple<List<T>, List<T2>, List<T3>, List<T4>, List<T5>, List<T6>, List<T7>>> SaveQueuesAsync<T, T2, T3, T4, T5, T6, T7>(bool isTran = true) public async Task<Tuple<List<T>, List<T2>, List<T3>, List<T4>, List<T5>, List<T6>, List<T7>>> SaveQueuesAsync<T, T2, T3, T4, T5, T6, T7>(bool isTran = true)
{ {
return await SaveQueuesProviderAsync(isTran, (sql, parameters) => { return this.Ado.SqlQueryAsync<T, T2, T3, T4, T5, T6, T7>(sql, parameters); }); return await SaveQueuesProviderAsync(isTran, (sql, parameters) => { return this.Ado.SqlQueryAsync<T, T2, T3, T4, T5, T6, T7>(sql, parameters); });
} }
public void AddQueue(string sql, object parsmeters=null) public void AddQueue(string sql, object parsmeters = null)
{ {
if (Queues == null) if (Queues == null)
{ {
Queues = new QueueList(); Queues = new QueueList();
} }
this.Queues.Add(sql,this.Context.Ado.GetParameters(parsmeters)); this.Queues.Add(sql, this.Context.Ado.GetParameters(parsmeters));
} }
public void AddQueue(string sql, SugarParameter parsmeter) public void AddQueue(string sql, SugarParameter parsmeter)
{ {
if (Queues == null) if (Queues == null)
{ {
@ -878,7 +892,7 @@ namespace SqlSugar
} }
this.Queues.Add(sql, parsmeters); this.Queues.Add(sql, parsmeters);
} }
public QueueList Queues { get { if (_Queues == null) { _Queues = new QueueList(); } return _Queues; } set { _Queues = value; } } public QueueList Queues { get { if (_Queues == null) { _Queues = new QueueList(); } return _Queues; } set { _Queues = value; } }
@ -922,7 +936,7 @@ namespace SqlSugar
} }
} }
this.Queues.Clear(); this.Queues.Clear();
var result =await func(sqlBuilder.ToString(), parsmeters); var result = await func(sqlBuilder.ToString(), parsmeters);
if (isTran) this.Ado.CommitTran(); if (isTran) this.Ado.CommitTran();
return result; return result;
} }
@ -936,7 +950,8 @@ namespace SqlSugar
{ {
try try
{ {
if (this.CurrentConnectionConfig.DbType == DbType.Oracle) { if (this.CurrentConnectionConfig.DbType == DbType.Oracle)
{
throw new Exception("Oracle no support SaveQueues"); throw new Exception("Oracle no support SaveQueues");
} }
if (this.Queues == null || this.Queues.Count == 0) return default(T); if (this.Queues == null || this.Queues.Count == 0) return default(T);
@ -970,7 +985,7 @@ namespace SqlSugar
.TrimEnd('\n') .TrimEnd('\n')
.TrimEnd('\r') .TrimEnd('\r')
.TrimEnd('\n') .TrimEnd('\n')
.TrimEnd(';')+";"; .TrimEnd(';') + ";";
sqlBuilder.AppendLine(itemSql); sqlBuilder.AppendLine(itemSql);
index++; index++;
} }