mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-09-24 04:53:45 +08:00
Add db.SlaveQueryable
This commit is contained in:
@@ -1478,6 +1478,7 @@ namespace SqlSugar
|
|||||||
RestoreMapping();
|
RestoreMapping();
|
||||||
DataTable result = null;
|
DataTable result = null;
|
||||||
bool isChangeQueryableMasterSlave = GetIsMasterQuery();
|
bool isChangeQueryableMasterSlave = GetIsMasterQuery();
|
||||||
|
bool isChangeQueryableSlave = GetIsSlaveQuery();
|
||||||
if (IsCache)
|
if (IsCache)
|
||||||
{
|
{
|
||||||
var cacheService = this.Context.CurrentConnectionConfig.ConfigureExternalServices.DataInfoCacheService;
|
var cacheService = this.Context.CurrentConnectionConfig.ConfigureExternalServices.DataInfoCacheService;
|
||||||
@@ -1488,6 +1489,7 @@ namespace SqlSugar
|
|||||||
result = this.Db.GetDataTable(sqlObj.Key, sqlObj.Value.ToArray());
|
result = this.Db.GetDataTable(sqlObj.Key, sqlObj.Value.ToArray());
|
||||||
}
|
}
|
||||||
RestChangeMasterQuery(isChangeQueryableMasterSlave);
|
RestChangeMasterQuery(isChangeQueryableMasterSlave);
|
||||||
|
RestChangeSlaveQuery(isChangeQueryableSlave);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
public virtual DataTable ToDataTablePage(int pageIndex, int pageSize)
|
public virtual DataTable ToDataTablePage(int pageIndex, int pageSize)
|
||||||
@@ -3179,10 +3181,12 @@ namespace SqlSugar
|
|||||||
List<TResult> result;
|
List<TResult> result;
|
||||||
var isComplexModel = QueryBuilder.IsComplexModel(sqlObj.Key);
|
var isComplexModel = QueryBuilder.IsComplexModel(sqlObj.Key);
|
||||||
var entityType = typeof(TResult);
|
var entityType = typeof(TResult);
|
||||||
|
bool isChangeQueryableSlave = GetIsSlaveQuery();
|
||||||
bool isChangeQueryableMasterSlave = GetIsMasterQuery();
|
bool isChangeQueryableMasterSlave = GetIsMasterQuery();
|
||||||
var dataReader = this.Db.GetDataReader(sqlObj.Key, sqlObj.Value.ToArray());
|
var dataReader = this.Db.GetDataReader(sqlObj.Key, sqlObj.Value.ToArray());
|
||||||
result = GetData<TResult>(isComplexModel, entityType, dataReader);
|
result = GetData<TResult>(isComplexModel, entityType, dataReader);
|
||||||
RestChangeMasterQuery(isChangeQueryableMasterSlave);
|
RestChangeMasterQuery(isChangeQueryableMasterSlave);
|
||||||
|
RestChangeSlaveQuery(isChangeQueryableSlave);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3203,6 +3207,23 @@ namespace SqlSugar
|
|||||||
return isChangeQueryableMasterSlave;
|
return isChangeQueryableMasterSlave;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void RestChangeSlaveQuery(bool isChangeQueryableSlaveSlave)
|
||||||
|
{
|
||||||
|
if (isChangeQueryableSlaveSlave)
|
||||||
|
this.Context.Ado.IsDisableMasterSlaveSeparation = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool GetIsSlaveQuery()
|
||||||
|
{
|
||||||
|
var isChangeQueryableMasterSlave =
|
||||||
|
this.QueryBuilder.IsEnableMasterSlaveSeparation == true &&
|
||||||
|
this.Context.Ado.IsDisableMasterSlaveSeparation == true &&
|
||||||
|
this.Context.Ado.Transaction == null;
|
||||||
|
if (isChangeQueryableMasterSlave)
|
||||||
|
this.Context.Ado.IsDisableMasterSlaveSeparation = false;
|
||||||
|
return isChangeQueryableMasterSlave;
|
||||||
|
}
|
||||||
|
|
||||||
protected async Task<List<TResult>> GetDataAsync<TResult>(KeyValuePair<string, List<SugarParameter>> sqlObj)
|
protected async Task<List<TResult>> GetDataAsync<TResult>(KeyValuePair<string, List<SugarParameter>> sqlObj)
|
||||||
{
|
{
|
||||||
List<TResult> result;
|
List<TResult> result;
|
||||||
@@ -3354,6 +3375,7 @@ namespace SqlSugar
|
|||||||
_Size=it._Size
|
_Size=it._Size
|
||||||
}).ToList();
|
}).ToList();
|
||||||
}
|
}
|
||||||
|
asyncQueryableBuilder.IsEnableMasterSlaveSeparation = this.QueryBuilder.IsEnableMasterSlaveSeparation;
|
||||||
asyncQueryableBuilder.TranLock = this.QueryBuilder.TranLock;
|
asyncQueryableBuilder.TranLock = this.QueryBuilder.TranLock;
|
||||||
asyncQueryableBuilder.IsDisableMasterSlaveSeparation = this.QueryBuilder.IsDisableMasterSlaveSeparation;
|
asyncQueryableBuilder.IsDisableMasterSlaveSeparation = this.QueryBuilder.IsDisableMasterSlaveSeparation;
|
||||||
asyncQueryableBuilder.IsQueryInQuery = this.QueryBuilder.IsQueryInQuery;
|
asyncQueryableBuilder.IsQueryInQuery = this.QueryBuilder.IsQueryInQuery;
|
||||||
|
@@ -35,6 +35,7 @@ namespace SqlSugar
|
|||||||
#region Splicing basic
|
#region Splicing basic
|
||||||
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 IsQueryInQuery { get; set; }
|
public bool IsQueryInQuery { get; set; }
|
||||||
public List<object> Includes { get; set; }
|
public List<object> Includes { get; set; }
|
||||||
public List<string> IgnoreColumns { get; set; }
|
public List<string> IgnoreColumns { get; set; }
|
||||||
|
@@ -91,6 +91,13 @@ namespace SqlSugar
|
|||||||
result.QueryBuilder.IsDisableMasterSlaveSeparation = true;
|
result.QueryBuilder.IsDisableMasterSlaveSeparation = true;
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ISugarQueryable<T> SlaveQueryable<T>()
|
||||||
|
{
|
||||||
|
var result = this.Queryable<T>();
|
||||||
|
result.QueryBuilder.IsEnableMasterSlaveSeparation = true;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Lambda Query operation
|
/// Lambda Query operation
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@@ -242,6 +242,10 @@ namespace SqlSugar
|
|||||||
{
|
{
|
||||||
ScopedContext.Open();
|
ScopedContext.Open();
|
||||||
}
|
}
|
||||||
|
public ISugarQueryable<T> SlaveQueryable<T>()
|
||||||
|
{
|
||||||
|
return ScopedContext.SlaveQueryable<T>();
|
||||||
|
}
|
||||||
public ISugarQueryable<T> MasterQueryable<T>()
|
public ISugarQueryable<T> MasterQueryable<T>()
|
||||||
{
|
{
|
||||||
return ScopedContext.MasterQueryable<T>();
|
return ScopedContext.MasterQueryable<T>();
|
||||||
|
@@ -69,6 +69,7 @@ namespace SqlSugar
|
|||||||
|
|
||||||
#region Queryable
|
#region Queryable
|
||||||
ISugarQueryable<T> MasterQueryable<T>();
|
ISugarQueryable<T> MasterQueryable<T>();
|
||||||
|
ISugarQueryable<T> SlaveQueryable<T>();
|
||||||
ISugarQueryable<T> SqlQueryable<T>(string sql) where T : class, new();
|
ISugarQueryable<T> SqlQueryable<T>(string sql) where T : class, new();
|
||||||
ISugarQueryable<ExpandoObject> Queryable(string tableName, string shortName);
|
ISugarQueryable<ExpandoObject> Queryable(string tableName, string shortName);
|
||||||
ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> Queryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>(Expression<Func<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, bool>> joinExpression) where T : class, new();
|
ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> Queryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>(Expression<Func<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, bool>> joinExpression) where T : class, new();
|
||||||
|
@@ -179,6 +179,10 @@ namespace SqlSugar
|
|||||||
{
|
{
|
||||||
return this.Context.MasterQueryable<T>();
|
return this.Context.MasterQueryable<T>();
|
||||||
}
|
}
|
||||||
|
public ISugarQueryable<T> SlaveQueryable<T>()
|
||||||
|
{
|
||||||
|
return this.Context.SlaveQueryable<T>();
|
||||||
|
}
|
||||||
public ISugarQueryable<T> SqlQueryable<T>(string sql) where T : class, new()
|
public ISugarQueryable<T> SqlQueryable<T>(string sql) where T : class, new()
|
||||||
{
|
{
|
||||||
return this.Context.SqlQueryable<T>(sql);
|
return this.Context.SqlQueryable<T>(sql);
|
||||||
|
@@ -228,7 +228,10 @@ namespace SqlSugar
|
|||||||
{
|
{
|
||||||
ScopedContext.Open();
|
ScopedContext.Open();
|
||||||
}
|
}
|
||||||
|
public ISugarQueryable<T> SlaveQueryable<T>()
|
||||||
|
{
|
||||||
|
return ScopedContext.SlaveQueryable<T>();
|
||||||
|
}
|
||||||
public ISugarQueryable<T> MasterQueryable<T>()
|
public ISugarQueryable<T> MasterQueryable<T>()
|
||||||
{
|
{
|
||||||
return ScopedContext.MasterQueryable<T>();
|
return ScopedContext.MasterQueryable<T>();
|
||||||
|
Reference in New Issue
Block a user