diff --git a/Src/Asp.Net/SqlSugar/Abstract/AdoProvider/AdoProvider.cs b/Src/Asp.Net/SqlSugar/Abstract/AdoProvider/AdoProvider.cs index ad7498c23..ddd1b6639 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/AdoProvider/AdoProvider.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/AdoProvider/AdoProvider.cs @@ -34,7 +34,7 @@ namespace SqlSugar protected List OutputParameters { get; set; } public virtual string SqlParameterKeyWord { get { return "@"; } } public IDbTransaction Transaction { get; set; } - public virtual SqlSugarClient Context { get; set; } + public virtual SqlSugarContext Context { get; set; } internal CommandType OldCommandType { get; set; } internal bool OldClearParameters { get; set; } public IDataParameterCollection DataReaderParameters { get; set; } diff --git a/Src/Asp.Net/SqlSugar/Abstract/AopProvider/AopProvider.cs b/Src/Asp.Net/SqlSugar/Abstract/AopProvider/AopProvider.cs index 4dc264159..716b6ca68 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/AopProvider/AopProvider.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/AopProvider/AopProvider.cs @@ -8,12 +8,12 @@ namespace SqlSugar public class AopProvider { private AopProvider() { } - public AopProvider(SqlSugarClient context) + public AopProvider(SqlSugarContext context) { this.Context = context; this.Context.Ado.IsEnableLogEvent = true; } - private SqlSugarClient Context { get; set; } + private SqlSugarContext Context { get; set; } public Action OnDiffLogEvent { set { this.Context.Ado.DiffLogEvent = value; } } public Action OnError { set { this.Context.Ado.ErrorEvent = value; } } public Action OnLogExecuting { set { this.Context.Ado.LogEventStarting = value; } } diff --git a/Src/Asp.Net/SqlSugar/Abstract/CodeFirstProvider/CodeFirstProvider.cs b/Src/Asp.Net/SqlSugar/Abstract/CodeFirstProvider/CodeFirstProvider.cs index 8bf314e73..31d883855 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/CodeFirstProvider/CodeFirstProvider.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/CodeFirstProvider/CodeFirstProvider.cs @@ -8,7 +8,7 @@ namespace SqlSugar public partial class CodeFirstProvider : ICodeFirst { #region Properties - public virtual SqlSugarClient Context { get; set; } + public virtual SqlSugarContext Context { get; set; } protected bool IsBackupTable { get; set; } protected int MaxBackupDataRows { get; set; } protected virtual int DefultLength { get; set; } diff --git a/Src/Asp.Net/SqlSugar/Abstract/DbBindProvider/DbBindAccessory.cs b/Src/Asp.Net/SqlSugar/Abstract/DbBindProvider/DbBindAccessory.cs index f75193437..061f5af87 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/DbBindProvider/DbBindAccessory.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/DbBindProvider/DbBindAccessory.cs @@ -7,7 +7,7 @@ namespace SqlSugar { public partial class DbBindAccessory { - protected List GetEntityList(SqlSugarClient context, IDataReader dataReader) + protected List GetEntityList(SqlSugarContext context, IDataReader dataReader) { Type type = typeof(T); var fieldNames = GetDataReaderNames(dataReader); diff --git a/Src/Asp.Net/SqlSugar/Abstract/DbBindProvider/DbBindProvider.cs b/Src/Asp.Net/SqlSugar/Abstract/DbBindProvider/DbBindProvider.cs index 3769ac0ce..27c7b79bd 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/DbBindProvider/DbBindProvider.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/DbBindProvider/DbBindProvider.cs @@ -10,7 +10,7 @@ namespace SqlSugar public abstract partial class DbBindProvider : DbBindAccessory, IDbBind { #region Properties - public virtual SqlSugarClient Context { get; set; } + public virtual SqlSugarContext Context { get; set; } public abstract List> MappingTypes { get; } #endregion diff --git a/Src/Asp.Net/SqlSugar/Abstract/DbBindProvider/IDataReaderEntityBuilder.cs b/Src/Asp.Net/SqlSugar/Abstract/DbBindProvider/IDataReaderEntityBuilder.cs index eb3763112..a4953f1f6 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/DbBindProvider/IDataReaderEntityBuilder.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/DbBindProvider/IDataReaderEntityBuilder.cs @@ -22,7 +22,7 @@ namespace SqlSugar #endregion #region Fields - private SqlSugarClient Context = null; + private SqlSugarContext Context = null; private IDataReaderEntityBuilder DynamicBuilder; private IDataRecord DataRecord; private static readonly MethodInfo isDBNullMethod = typeof(IDataRecord).GetMethod("IsDBNull", new Type[] { typeof(int) }); @@ -65,7 +65,7 @@ namespace SqlSugar private static readonly MethodInfo getOther = typeof(IDataRecordExtensions).GetMethod("GetOther"); private static readonly MethodInfo getSqliteTypeNull = typeof(IDataRecordExtensions).GetMethod("GetSqliteTypeNull"); private static readonly MethodInfo getSqliteType = typeof(IDataRecordExtensions).GetMethod("GetSqliteType"); - private static readonly MethodInfo getEntity = typeof(IDataRecordExtensions).GetMethod("GetEntity", new Type[] { typeof(SqlSugarClient) }); + private static readonly MethodInfo getEntity = typeof(IDataRecordExtensions).GetMethod("GetEntity", new Type[] { typeof(SqlSugarContext) }); private delegate T Load(IDataRecord dataRecord); private Load handler; @@ -77,7 +77,7 @@ namespace SqlSugar } - public IDataReaderEntityBuilder(SqlSugarClient context, IDataRecord dataRecord,List fieldNames) + public IDataReaderEntityBuilder(SqlSugarContext context, IDataRecord dataRecord,List fieldNames) { this.Context = context; this.DataRecord = dataRecord; diff --git a/Src/Asp.Net/SqlSugar/Abstract/DbBindProvider/IDataRecordExtensions.cs b/Src/Asp.Net/SqlSugar/Abstract/DbBindProvider/IDataRecordExtensions.cs index 36da4c115..cdbc6fdf2 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/DbBindProvider/IDataRecordExtensions.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/DbBindProvider/IDataRecordExtensions.cs @@ -243,7 +243,7 @@ namespace SqlSugar return t; } - public static object GetEntity(this IDataReader dr, SqlSugarClient context) + public static object GetEntity(this IDataReader dr, SqlSugarContext context) { return null; } diff --git a/Src/Asp.Net/SqlSugar/Abstract/DbFirstProvider/DbFirstProvider.cs b/Src/Asp.Net/SqlSugar/Abstract/DbFirstProvider/DbFirstProvider.cs index 8d34e4422..d819a59d2 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/DbFirstProvider/DbFirstProvider.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/DbFirstProvider/DbFirstProvider.cs @@ -9,7 +9,7 @@ namespace SqlSugar { public abstract partial class DbFirstProvider : IDbFirst { - public virtual SqlSugarClient Context { get; set; } + public virtual SqlSugarContext Context { get; set; } private string ClassTemplate { get; set; } private string ClassDescriptionTemplate { get; set; } private string PropertyTemplate { get; set; } diff --git a/Src/Asp.Net/SqlSugar/Abstract/DbMaintenanceProvider/Properties.cs b/Src/Asp.Net/SqlSugar/Abstract/DbMaintenanceProvider/Properties.cs index cd89c6fe1..610c1430f 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/DbMaintenanceProvider/Properties.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/DbMaintenanceProvider/Properties.cs @@ -9,7 +9,7 @@ namespace SqlSugar { #region Context private ISqlBuilder _SqlBuilder; - public SqlSugarClient Context { get; set; } + public SqlSugarContext Context { get; set; } public ISqlBuilder SqlBuilder { get diff --git a/Src/Asp.Net/SqlSugar/Abstract/DeleteProvider/DeleteableProvider.cs b/Src/Asp.Net/SqlSugar/Abstract/DeleteProvider/DeleteableProvider.cs index 2780fae00..44037d151 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/DeleteProvider/DeleteableProvider.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/DeleteProvider/DeleteableProvider.cs @@ -12,7 +12,7 @@ namespace SqlSugar { public class DeleteableProvider : IDeleteable where T : class, new() { - public SqlSugarClient Context { get; set; } + public SqlSugarContext Context { get; set; } public IAdo Db { get { return Context.Ado; } } public ISqlBuilder SqlBuilder { get; set; } public DeleteBuilder DeleteBuilder { get; set; } diff --git a/Src/Asp.Net/SqlSugar/Abstract/EntityMaintenance/EntityMaintenance.cs b/Src/Asp.Net/SqlSugar/Abstract/EntityMaintenance/EntityMaintenance.cs index d5507459d..64e021d8c 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/EntityMaintenance/EntityMaintenance.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/EntityMaintenance/EntityMaintenance.cs @@ -9,7 +9,7 @@ namespace SqlSugar { public class EntityMaintenance { - public SqlSugarClient Context { get; set; } + public SqlSugarContext Context { get; set; } public EntityInfo GetEntityInfo() { diff --git a/Src/Asp.Net/SqlSugar/Abstract/FilterProvider/FilterProvider.cs b/Src/Asp.Net/SqlSugar/Abstract/FilterProvider/FilterProvider.cs index fef204282..e3b9ec5c7 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/FilterProvider/FilterProvider.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/FilterProvider/FilterProvider.cs @@ -7,7 +7,7 @@ namespace SqlSugar { public class QueryFilterProvider : IFilter { - internal SqlSugarClient Context { get; set; } + internal SqlSugarContext Context { get; set; } private List _Filters { get; set; } public IFilter Add(SqlFilterItem filter) diff --git a/Src/Asp.Net/SqlSugar/Abstract/InsertableProvider/InsertableProvider.cs b/Src/Asp.Net/SqlSugar/Abstract/InsertableProvider/InsertableProvider.cs index 596fff76e..199039995 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/InsertableProvider/InsertableProvider.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/InsertableProvider/InsertableProvider.cs @@ -10,7 +10,7 @@ namespace SqlSugar { public class InsertableProvider : IInsertable where T : class, new() { - public SqlSugarClient Context { get; set; } + public SqlSugarContext Context { get; set; } public IAdo Ado { get { return Context.Ado; } } public ISqlBuilder SqlBuilder { get; set; } public InsertBuilder InsertBuilder { get; set; } diff --git a/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs b/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs index cbebc3a9c..78f9c5b7c 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs @@ -16,7 +16,7 @@ namespace SqlSugar #region T1 public partial class QueryableProvider : QueryableAccessory, ISugarQueryable { - public SqlSugarClient Context { get; set; } + public SqlSugarContext Context { get; set; } public IAdo Db { get { return Context.Ado; } } public IDbBind Bind { get { return this.Db.DbBind; } } public ISqlBuilder SqlBuilder { get; set; } @@ -1597,7 +1597,7 @@ namespace SqlSugar foreach (var item in result) { var contextProperty = item.GetType().GetProperty("Context"); - SqlSugarClient newClient = this.Context.Utilities.CopyContext(); + SqlSugarContext newClient = this.Context.Utilities.CopyContext(); contextProperty.SetValue(item, newClient, null); } } diff --git a/Src/Asp.Net/SqlSugar/Abstract/SaveableProvider/SaveableProvider.cs b/Src/Asp.Net/SqlSugar/Abstract/SaveableProvider/SaveableProvider.cs index fc1605378..ac23cd6d1 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/SaveableProvider/SaveableProvider.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/SaveableProvider/SaveableProvider.cs @@ -9,19 +9,19 @@ namespace SqlSugar { public partial class SaveableProvider : ISaveable where T : class, new() { - internal SaveableProvider(SqlSugarClient context,List saveObjects) + internal SaveableProvider(SqlSugarContext context,List saveObjects) { this.saveObjects = saveObjects; this.Context = context; this.Context.InitMppingInfo(); } - internal SaveableProvider(SqlSugarClient context, T saveObject) + internal SaveableProvider(SqlSugarContext context, T saveObject) { this.saveObjects = new List() { saveObject }; this.Context = context; this.Context.InitMppingInfo(); } - public SqlSugarClient Context { get; set; } + public SqlSugarContext Context { get; set; } public List saveObjects = new List(); public List existsObjects = null; public List insertObjects diff --git a/Src/Asp.Net/SqlSugar/Abstract/SqlBuilderProvider/DeleteBuilder.cs b/Src/Asp.Net/SqlSugar/Abstract/SqlBuilderProvider/DeleteBuilder.cs index 52512fdda..5ce30a853 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/SqlBuilderProvider/DeleteBuilder.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/SqlBuilderProvider/DeleteBuilder.cs @@ -13,7 +13,7 @@ namespace SqlSugar #region Common Properties public EntityInfo EntityInfo { get; set; } - public SqlSugarClient Context { get; set; } + public SqlSugarContext Context { get; set; } public ILambdaExpressions LambdaExpressions { get; set; } public List Parameters { get; set; } public StringBuilder sql { get; set; } diff --git a/Src/Asp.Net/SqlSugar/Abstract/SqlBuilderProvider/InsertBuilder.cs b/Src/Asp.Net/SqlSugar/Abstract/SqlBuilderProvider/InsertBuilder.cs index a00f5c494..c80df45ca 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/SqlBuilderProvider/InsertBuilder.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/SqlBuilderProvider/InsertBuilder.cs @@ -18,7 +18,7 @@ namespace SqlSugar #endregion #region Common Properties - public SqlSugarClient Context { get; set; } + public SqlSugarContext Context { get; set; } public ILambdaExpressions LambdaExpressions { get; set; } public ISqlBuilder Builder { get; set; } public StringBuilder sql { get; set; } diff --git a/Src/Asp.Net/SqlSugar/Abstract/SqlBuilderProvider/QueryBuilder.cs b/Src/Asp.Net/SqlSugar/Abstract/SqlBuilderProvider/QueryBuilder.cs index 9a7a9a15f..3a2aa529b 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/SqlBuilderProvider/QueryBuilder.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/SqlBuilderProvider/QueryBuilder.cs @@ -27,7 +27,7 @@ namespace SqlSugar #region Service object public StringBuilder sql { get; set; } - public SqlSugarClient Context { get; set; } + public SqlSugarContext Context { get; set; } public ILambdaExpressions LambdaExpressions { get; set; } public ISqlBuilder Builder { get; set; } #endregion diff --git a/Src/Asp.Net/SqlSugar/Abstract/SqlBuilderProvider/SqlBuilderProvider.cs b/Src/Asp.Net/SqlSugar/Abstract/SqlBuilderProvider/SqlBuilderProvider.cs index 40b183acd..26cb8b648 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/SqlBuilderProvider/SqlBuilderProvider.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/SqlBuilderProvider/SqlBuilderProvider.cs @@ -10,7 +10,7 @@ namespace SqlSugar public abstract partial class SqlBuilderProvider : SqlBuilderAccessory, ISqlBuilder { #region Properties - public SqlSugarClient Context { get; set; } + public SqlSugarContext Context { get; set; } public CommandType CommandType { get; set; } public DeleteBuilder DeleteBuilder { get; set; } public InsertBuilder InsertBuilder { get; set; } diff --git a/Src/Asp.Net/SqlSugar/Abstract/SqlBuilderProvider/SqlQueryBuilder.cs b/Src/Asp.Net/SqlSugar/Abstract/SqlBuilderProvider/SqlQueryBuilder.cs index de1ebe350..713f41088 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/SqlBuilderProvider/SqlQueryBuilder.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/SqlBuilderProvider/SqlQueryBuilder.cs @@ -17,7 +17,7 @@ namespace SqlSugar #endregion #region Properties - public SqlSugarClient Context { get; set; } + public SqlSugarContext Context { get; set; } public string Fields { get diff --git a/Src/Asp.Net/SqlSugar/Abstract/SqlBuilderProvider/UpdateBuilder.cs b/Src/Asp.Net/SqlSugar/Abstract/SqlBuilderProvider/UpdateBuilder.cs index 84c7105b0..b68c59253 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/SqlBuilderProvider/UpdateBuilder.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/SqlBuilderProvider/UpdateBuilder.cs @@ -17,7 +17,7 @@ namespace SqlSugar this.WhereValues = new List(); this.Parameters = new List(); } - public SqlSugarClient Context { get; set; } + public SqlSugarContext Context { get; set; } public ILambdaExpressions LambdaExpressions { get; set; } public ISqlBuilder Builder { get; set; } public StringBuilder sql { get; set; } diff --git a/Src/Asp.Net/SqlSugar/Abstract/UpdateProvider/UpdateableProvider.cs b/Src/Asp.Net/SqlSugar/Abstract/UpdateProvider/UpdateableProvider.cs index c54123a69..382128c55 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/UpdateProvider/UpdateableProvider.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/UpdateProvider/UpdateableProvider.cs @@ -12,7 +12,7 @@ namespace SqlSugar public class UpdateableProvider : IUpdateable where T : class, new() { #region Property - public SqlSugarClient Context { get; internal set; } + public SqlSugarContext Context { get; internal set; } public EntityInfo EntityInfo { get; internal set; } public ISqlBuilder SqlBuilder { get; internal set; } public UpdateBuilder UpdateBuilder { get; set; } diff --git a/Src/Asp.Net/SqlSugar/CacheScheme/CacheKeyBuider.cs b/Src/Asp.Net/SqlSugar/CacheScheme/CacheKeyBuider.cs index 3168d87b3..b445f93ef 100644 --- a/Src/Asp.Net/SqlSugar/CacheScheme/CacheKeyBuider.cs +++ b/Src/Asp.Net/SqlSugar/CacheScheme/CacheKeyBuider.cs @@ -7,7 +7,7 @@ namespace SqlSugar { internal class CacheKeyBuider { - public static CacheKey GetKey(SqlSugarClient context, QueryBuilder queryBuilder) + public static CacheKey GetKey(SqlSugarContext context, QueryBuilder queryBuilder) { CacheKey result = new CacheKey(); result.Database = context.Context.Ado.Connection.Database; @@ -38,7 +38,7 @@ namespace SqlSugar } } - private static void AddTables(SqlSugarClient context, QueryBuilder queryBuilder, CacheKey result) + private static void AddTables(SqlSugarContext context, QueryBuilder queryBuilder, CacheKey result) { result.Tables = new List(); result.Tables.Add(context.EntityMaintenance.GetTableName(queryBuilder.EntityName)); diff --git a/Src/Asp.Net/SqlSugar/CacheScheme/CacheSchemeMain.cs b/Src/Asp.Net/SqlSugar/CacheScheme/CacheSchemeMain.cs index 449dfd5b3..bbb52a8da 100644 --- a/Src/Asp.Net/SqlSugar/CacheScheme/CacheSchemeMain.cs +++ b/Src/Asp.Net/SqlSugar/CacheScheme/CacheSchemeMain.cs @@ -7,7 +7,7 @@ namespace SqlSugar { internal class CacheSchemeMain { - public static T GetOrCreate(ICacheService cacheService, QueryBuilder queryBuilder, Func getData, int cacheDurationInSeconds, SqlSugarClient context) + public static T GetOrCreate(ICacheService cacheService, QueryBuilder queryBuilder, Func getData, int cacheDurationInSeconds, SqlSugarContext context) { CacheKey key = CacheKeyBuider.GetKey(context, queryBuilder); string keyString = key.ToString(); diff --git a/Src/Asp.Net/SqlSugar/Entities/MapperCache.cs b/Src/Asp.Net/SqlSugar/Entities/MapperCache.cs index 083a39e8b..9855e1658 100644 --- a/Src/Asp.Net/SqlSugar/Entities/MapperCache.cs +++ b/Src/Asp.Net/SqlSugar/Entities/MapperCache.cs @@ -9,11 +9,11 @@ namespace SqlSugar { private Dictionary caches = new Dictionary(); private List _list { get; set; } - private SqlSugarClient _context { get; set; } + private SqlSugarContext _context { get; set; } private MapperCache() { } - public MapperCache(List list, SqlSugarClient context) + public MapperCache(List list, SqlSugarContext context) { _list = list; _context = context; diff --git a/Src/Asp.Net/SqlSugar/Entities/ModelContext.cs b/Src/Asp.Net/SqlSugar/Entities/ModelContext.cs index 302b68e8e..4c55b635e 100644 --- a/Src/Asp.Net/SqlSugar/Entities/ModelContext.cs +++ b/Src/Asp.Net/SqlSugar/Entities/ModelContext.cs @@ -10,7 +10,7 @@ namespace SqlSugar { [SugarColumn(IsIgnore = true)] [JsonIgnore] - public SqlSugarClient Context { get; set; } + public SqlSugarContext Context { get; set; } public ISugarQueryable CreateMapping() where T : class, new() { Check.ArgumentNullException(Context, "Please use Sqlugar.ModelContext"); diff --git a/Src/Asp.Net/SqlSugar/Entities/SqlFilter.cs b/Src/Asp.Net/SqlSugar/Entities/SqlFilter.cs index 30bed34f4..b862c6c44 100644 --- a/Src/Asp.Net/SqlSugar/Entities/SqlFilter.cs +++ b/Src/Asp.Net/SqlSugar/Entities/SqlFilter.cs @@ -11,7 +11,7 @@ namespace SqlSugar /// Equal to NULL representing global /// public string FilterName { get; set; } - public Func FilterValue { get; set; } + public Func FilterValue { get; set; } /// /// Is it a multiple table query? /// diff --git a/Src/Asp.Net/SqlSugar/Infrastructure/ContextMethods.cs b/Src/Asp.Net/SqlSugar/Infrastructure/ContextMethods.cs index a52186376..7bad65dea 100644 --- a/Src/Asp.Net/SqlSugar/Infrastructure/ContextMethods.cs +++ b/Src/Asp.Net/SqlSugar/Infrastructure/ContextMethods.cs @@ -11,7 +11,7 @@ namespace SqlSugar { public partial class ContextMethods : IContextMethods { - public SqlSugarClient Context { get; set; } + public SqlSugarContext Context { get; set; } #region DataReader /// @@ -268,9 +268,9 @@ namespace SqlSugar return DeserializeObject(jsonString); } } - public SqlSugarClient CopyContext(bool isCopyEvents = false) + public SqlSugarContext CopyContext(bool isCopyEvents = false) { - var newClient = new SqlSugarClient(this.TranslateCopy(Context.CurrentConnectionConfig)); + var newClient = new SqlSugarContext(this.TranslateCopy(Context.CurrentConnectionConfig)); newClient.CurrentConnectionConfig.ConfigureExternalServices = Context.CurrentConnectionConfig.ConfigureExternalServices; newClient.MappingColumns = this.TranslateCopy(Context.MappingColumns); newClient.MappingTables = this.TranslateCopy(Context.MappingTables); diff --git a/Src/Asp.Net/SqlSugar/Infrastructure/Mapper.cs b/Src/Asp.Net/SqlSugar/Infrastructure/Mapper.cs index 9f6f2b96e..10eb889ba 100644 --- a/Src/Asp.Net/SqlSugar/Infrastructure/Mapper.cs +++ b/Src/Asp.Net/SqlSugar/Infrastructure/Mapper.cs @@ -8,8 +8,8 @@ namespace SqlSugar { public class SugarMapper { - private SqlSugarClient _context; - public SugarMapper(SqlSugarClient context) + private SqlSugarContext _context; + public SugarMapper(SqlSugarContext context) { _context = context; } diff --git a/Src/Asp.Net/SqlSugar/Infrastructure/SqlSugarAccessory.cs b/Src/Asp.Net/SqlSugar/Infrastructure/SqlSugarAccessory.cs index 25a9811ef..2a102c087 100644 --- a/Src/Asp.Net/SqlSugar/Infrastructure/SqlSugarAccessory.cs +++ b/Src/Asp.Net/SqlSugar/Infrastructure/SqlSugarAccessory.cs @@ -7,10 +7,10 @@ using System.Text; using System.Threading.Tasks; namespace SqlSugar { - public partial class SqlSugarClient + public partial class SqlSugarContext { #region Properties - public SqlSugarClient Context + public SqlSugarContext Context { get { @@ -19,7 +19,7 @@ namespace SqlSugar { if (CallContext.ContextList.Value.IsNullOrEmpty()) { - CallContext.ContextList.Value = new List(); + CallContext.ContextList.Value = new List(); CallContext.ContextList.Value.Add(_Context); } else @@ -55,7 +55,7 @@ namespace SqlSugar #region Fields protected ISqlBuilder _SqlBuilder; - protected SqlSugarClient _Context { get; set; } + protected SqlSugarContext _Context { get; set; } protected EntityMaintenance _EntityProvider; protected IAdo _Ado; protected ILambdaExpressions _LambdaExpressions; diff --git a/Src/Asp.Net/SqlSugar/Interface/IAdo.cs b/Src/Asp.Net/SqlSugar/Interface/IAdo.cs index 5f8b1dda4..072767c7c 100644 --- a/Src/Asp.Net/SqlSugar/Interface/IAdo.cs +++ b/Src/Asp.Net/SqlSugar/Interface/IAdo.cs @@ -16,7 +16,7 @@ namespace SqlSugar IDbTransaction Transaction { get; set; } IDataParameter[] ToIDbDataParameter(params SugarParameter[] pars); SugarParameter[] GetParameters(object obj, PropertyInfo[] propertyInfo = null); - SqlSugarClient Context { get; set; } + SqlSugarContext Context { get; set; } void ExecuteBefore(string sql, SugarParameter[] pars); void ExecuteAfter(string sql, SugarParameter[] pars); diff --git a/Src/Asp.Net/SqlSugar/Interface/ICodeFirst.cs b/Src/Asp.Net/SqlSugar/Interface/ICodeFirst.cs index b72fc05a8..bf36e5a83 100644 --- a/Src/Asp.Net/SqlSugar/Interface/ICodeFirst.cs +++ b/Src/Asp.Net/SqlSugar/Interface/ICodeFirst.cs @@ -6,7 +6,7 @@ namespace SqlSugar { public partial interface ICodeFirst { - SqlSugarClient Context { get; set; } + SqlSugarContext Context { get; set; } ICodeFirst BackupTable(int maxBackupDataRows = int.MaxValue); ICodeFirst SetStringDefaultLength(int length); void InitTables(string entitiesNamespace); diff --git a/Src/Asp.Net/SqlSugar/Interface/IContextMethods.cs b/Src/Asp.Net/SqlSugar/Interface/IContextMethods.cs index 85256c276..44777dee8 100644 --- a/Src/Asp.Net/SqlSugar/Interface/IContextMethods.cs +++ b/Src/Asp.Net/SqlSugar/Interface/IContextMethods.cs @@ -10,14 +10,14 @@ namespace SqlSugar { public partial interface IContextMethods { - SqlSugarClient Context { get; set; } + SqlSugarContext Context { get; set; } ExpandoObject DataReaderToExpandoObject(IDataReader reader); List DataReaderToExpandoObjectList(IDataReader reader); List DataReaderToList(IDataReader reader); string SerializeObject(object value); T DeserializeObject(string value); T TranslateCopy(T sourceObject); - SqlSugarClient CopyContext(bool isCopyEvents = false); + SqlSugarContext CopyContext(bool isCopyEvents = false); dynamic DataTableToDynamic(DataTable table); List DataTableToList(DataTable table); ICacheService GetReflectionInoCacheInstance(); diff --git a/Src/Asp.Net/SqlSugar/Interface/IDMLBuilder.cs b/Src/Asp.Net/SqlSugar/Interface/IDMLBuilder.cs index d067f5647..394d9e346 100644 --- a/Src/Asp.Net/SqlSugar/Interface/IDMLBuilder.cs +++ b/Src/Asp.Net/SqlSugar/Interface/IDMLBuilder.cs @@ -9,7 +9,7 @@ namespace SqlSugar { string SqlTemplate { get; } List Parameters { get; set; } - SqlSugarClient Context { get; set; } + SqlSugarContext Context { get; set; } StringBuilder sql { get; set; } string ToSqlString(); void Clear(); diff --git a/Src/Asp.Net/SqlSugar/Interface/IDbBind.cs b/Src/Asp.Net/SqlSugar/Interface/IDbBind.cs index 7539c9723..cf4aa1f52 100644 --- a/Src/Asp.Net/SqlSugar/Interface/IDbBind.cs +++ b/Src/Asp.Net/SqlSugar/Interface/IDbBind.cs @@ -7,7 +7,7 @@ namespace SqlSugar { public partial interface IDbBind { - SqlSugarClient Context { get; set; } + SqlSugarContext Context { get; set; } List GuidThrow { get; } List IntThrow { get; } List StringThrow { get; } diff --git a/Src/Asp.Net/SqlSugar/Interface/IDbFirst.cs b/Src/Asp.Net/SqlSugar/Interface/IDbFirst.cs index b95ad6633..d4098f8fc 100644 --- a/Src/Asp.Net/SqlSugar/Interface/IDbFirst.cs +++ b/Src/Asp.Net/SqlSugar/Interface/IDbFirst.cs @@ -6,7 +6,7 @@ namespace SqlSugar { public partial interface IDbFirst { - SqlSugarClient Context { get; set; } + SqlSugarContext Context { get; set; } IDbFirst SettingClassTemplate(Func func); IDbFirst SettingClassDescriptionTemplate(Func func); IDbFirst SettingPropertyTemplate(Func func); diff --git a/Src/Asp.Net/SqlSugar/Interface/IDbMaintenance.cs b/Src/Asp.Net/SqlSugar/Interface/IDbMaintenance.cs index c693304f6..19b7374f0 100644 --- a/Src/Asp.Net/SqlSugar/Interface/IDbMaintenance.cs +++ b/Src/Asp.Net/SqlSugar/Interface/IDbMaintenance.cs @@ -6,7 +6,7 @@ namespace SqlSugar { public partial interface IDbMaintenance { - SqlSugarClient Context { get; set; } + SqlSugarContext Context { get; set; } #region DML List GetViewInfoList(bool isCache=true); diff --git a/Src/Asp.Net/SqlSugar/Interface/ILambdaExpressions.cs b/Src/Asp.Net/SqlSugar/Interface/ILambdaExpressions.cs index 41ba6947a..c12caf716 100644 --- a/Src/Asp.Net/SqlSugar/Interface/ILambdaExpressions.cs +++ b/Src/Asp.Net/SqlSugar/Interface/ILambdaExpressions.cs @@ -15,7 +15,7 @@ namespace SqlSugar List JoinQueryInfos { get; set; } bool IsSingle { get; set; } - SqlSugarClient Context { get; set; } + SqlSugarContext Context { get; set; } IDbMethods DbMehtods { get; set; } Expression Expression { get; set; } int Index { get; set; } diff --git a/Src/Asp.Net/SqlSugar/Interface/IQueryable.cs b/Src/Asp.Net/SqlSugar/Interface/IQueryable.cs index ca9678ebf..062bba19a 100644 --- a/Src/Asp.Net/SqlSugar/Interface/IQueryable.cs +++ b/Src/Asp.Net/SqlSugar/Interface/IQueryable.cs @@ -11,7 +11,7 @@ namespace SqlSugar { public partial interface ISugarQueryable { - SqlSugarClient Context { get; set; } + SqlSugarContext Context { get; set; } ISqlBuilder SqlBuilder { get; set; } QueryBuilder QueryBuilder { get; set; } ISugarQueryable Clone(); diff --git a/Src/Asp.Net/SqlSugar/Interface/ISqlBuilder.cs b/Src/Asp.Net/SqlSugar/Interface/ISqlBuilder.cs index b866e0e5e..5d9717539 100644 --- a/Src/Asp.Net/SqlSugar/Interface/ISqlBuilder.cs +++ b/Src/Asp.Net/SqlSugar/Interface/ISqlBuilder.cs @@ -10,7 +10,7 @@ namespace SqlSugar { public partial interface ISqlBuilder { - SqlSugarClient Context { get; set; } + SqlSugarContext Context { get; set; } CommandType CommandType { get; set; } String AppendWhereOrAnd(bool isWhere, string sqlString); string AppendHaving(string sqlString); diff --git a/Src/Asp.Net/SqlSugar/Interface/ISqlSugarClient.cs b/Src/Asp.Net/SqlSugar/Interface/ISqlSugarClient.cs index 34d597c34..53776e046 100644 --- a/Src/Asp.Net/SqlSugar/Interface/ISqlSugarClient.cs +++ b/Src/Asp.Net/SqlSugar/Interface/ISqlSugarClient.cs @@ -11,7 +11,7 @@ namespace SqlSugar IAdo Ado { get; } AopProvider Aop { get; } ICodeFirst CodeFirst { get; } - SqlSugarClient Context { get; set; } + ISqlSugarClient Context { get; set; } Guid ContextID { get; set; } ConnectionConfig CurrentConnectionConfig { get; set; } IDbFirst DbFirst { get; } diff --git a/Src/Asp.Net/SqlSugar/OnlyNet/PostgreSQLExpressionContext.cs b/Src/Asp.Net/SqlSugar/OnlyNet/PostgreSQLExpressionContext.cs index 32a0c8699..c0c869acc 100644 --- a/Src/Asp.Net/SqlSugar/OnlyNet/PostgreSQLExpressionContext.cs +++ b/Src/Asp.Net/SqlSugar/OnlyNet/PostgreSQLExpressionContext.cs @@ -10,7 +10,7 @@ namespace SqlSugar } internal class PostgreSQLExpressionContext : ExpressionContext, ILambdaExpressions { - public SqlSugarClient Context + public SqlSugarContext Context { get { diff --git a/Src/Asp.Net/SqlSugar/Realization/MySql/SqlBuilder/MySqlExpressionContext.cs b/Src/Asp.Net/SqlSugar/Realization/MySql/SqlBuilder/MySqlExpressionContext.cs index 7e1d6a3ff..e1b54430a 100644 --- a/Src/Asp.Net/SqlSugar/Realization/MySql/SqlBuilder/MySqlExpressionContext.cs +++ b/Src/Asp.Net/SqlSugar/Realization/MySql/SqlBuilder/MySqlExpressionContext.cs @@ -4,7 +4,7 @@ namespace SqlSugar { public class MySqlExpressionContext : ExpressionContext, ILambdaExpressions { - public SqlSugarClient Context { get; set; } + public SqlSugarContext Context { get; set; } public MySqlExpressionContext() { base.DbMehtods = new MySqlMethod(); diff --git a/Src/Asp.Net/SqlSugar/Realization/Oracle/SqlBuilder/OracleExpressionContext.cs b/Src/Asp.Net/SqlSugar/Realization/Oracle/SqlBuilder/OracleExpressionContext.cs index 340973a19..4a929a9a4 100644 --- a/Src/Asp.Net/SqlSugar/Realization/Oracle/SqlBuilder/OracleExpressionContext.cs +++ b/Src/Asp.Net/SqlSugar/Realization/Oracle/SqlBuilder/OracleExpressionContext.cs @@ -11,7 +11,7 @@ namespace SqlSugar { public partial class OracleExpressionContext : ExpressionContext, ILambdaExpressions { - public SqlSugarClient Context { get; set; } + public SqlSugarContext Context { get; set; } public OracleExpressionContext() { base.DbMehtods = new OracleMethod(); diff --git a/Src/Asp.Net/SqlSugar/Realization/SqlServer/SqlBuilder/SqlServerExpressionContext.cs b/Src/Asp.Net/SqlSugar/Realization/SqlServer/SqlBuilder/SqlServerExpressionContext.cs index 9742ba82a..dddffe193 100644 --- a/Src/Asp.Net/SqlSugar/Realization/SqlServer/SqlBuilder/SqlServerExpressionContext.cs +++ b/Src/Asp.Net/SqlSugar/Realization/SqlServer/SqlBuilder/SqlServerExpressionContext.cs @@ -11,7 +11,7 @@ namespace SqlSugar { public partial class SqlServerExpressionContext : ExpressionContext, ILambdaExpressions { - public SqlSugarClient Context { get; set; } + public SqlSugarContext Context { get; set; } public SqlServerExpressionContext() { base.DbMehtods = new SqlServerMethod(); diff --git a/Src/Asp.Net/SqlSugar/Realization/Sqlite/SqlBuilder/SqliteExpressionContext.cs b/Src/Asp.Net/SqlSugar/Realization/Sqlite/SqlBuilder/SqliteExpressionContext.cs index fbd7ac009..a66559cda 100644 --- a/Src/Asp.Net/SqlSugar/Realization/Sqlite/SqlBuilder/SqliteExpressionContext.cs +++ b/Src/Asp.Net/SqlSugar/Realization/Sqlite/SqlBuilder/SqliteExpressionContext.cs @@ -4,7 +4,7 @@ namespace SqlSugar { public class SqliteExpressionContext : ExpressionContext, ILambdaExpressions { - public SqlSugarClient Context { get; set; } + public SqlSugarContext Context { get; set; } public SqliteExpressionContext() { base.DbMehtods = new SqliteMethod(); diff --git a/Src/Asp.Net/SqlSugar/SimpleClient.cs b/Src/Asp.Net/SqlSugar/SimpleClient.cs index 5ce41ef30..8c1dbe023 100644 --- a/Src/Asp.Net/SqlSugar/SimpleClient.cs +++ b/Src/Asp.Net/SqlSugar/SimpleClient.cs @@ -8,14 +8,14 @@ namespace SqlSugar { public partial class SimpleClient { - protected SqlSugarClient Context { get; set; } - public SqlSugarClient FullClient { get { return this.Context; } } + protected SqlSugarContext Context { get; set; } + public SqlSugarContext FullClient { get { return this.Context; } } private SimpleClient() { } - public SimpleClient(SqlSugarClient context) + public SimpleClient(SqlSugarContext context) { this.Context = context; } @@ -123,14 +123,14 @@ namespace SqlSugar } public partial class SimpleClient where T : class, new() { - protected SqlSugarClient Context { get; set; } - public SqlSugarClient FullClient { get { return this.Context; } } + protected SqlSugarContext Context { get; set; } + public SqlSugarContext FullClient { get { return this.Context; } } private SimpleClient() { } - public SimpleClient(SqlSugarClient context) + public SimpleClient(SqlSugarContext context) { this.Context = context; } diff --git a/Src/Asp.Net/SqlSugar/SqlSugar.csproj b/Src/Asp.Net/SqlSugar/SqlSugar.csproj index f39e80914..6e1e606d2 100644 --- a/Src/Asp.Net/SqlSugar/SqlSugar.csproj +++ b/Src/Asp.Net/SqlSugar/SqlSugar.csproj @@ -128,6 +128,7 @@ + @@ -275,7 +276,7 @@ - + diff --git a/Src/Asp.Net/SqlSugar/SqlSugarClient.cs b/Src/Asp.Net/SqlSugar/SqlSugarClient.cs index 1b44af0f3..812fd7e1e 100644 --- a/Src/Asp.Net/SqlSugar/SqlSugarClient.cs +++ b/Src/Asp.Net/SqlSugar/SqlSugarClient.cs @@ -1,969 +1,518 @@ using System; using System.Collections.Generic; -using System.Data; using System.Dynamic; using System.Linq; using System.Linq.Expressions; using System.Text; -using System.Text.RegularExpressions; using System.Threading.Tasks; + namespace SqlSugar { - /// - /// ** description:Create datathis.access object - /// ** author:sunkaixuan - /// ** date:2017/1/2 - /// ** email:610262374@qq.com - /// - public partial class SqlSugarClient : IDisposable, ISqlSugarClient + public class SqlSugarClient : ISqlSugarClient { + private ISqlSugarClient _Context = null; + public ISqlSugarClient Context { get => _Context; set => _Context = value; } - #region Constructor public SqlSugarClient(ConnectionConfig config) { - this.Context = this; - this.CurrentConnectionConfig = config; - this.ContextID = Guid.NewGuid(); - Check.ArgumentNullException(config, "config is null"); - switch (config.DbType) - { - case DbType.MySql: - DependencyManagement.TryMySqlData(); - break; - case DbType.SqlServer: - break; - case DbType.Sqlite: - DependencyManagement.TrySqlite(); - break; - case DbType.Oracle: - DependencyManagement.TryOracle(); - break; - case DbType.PostgreSQL: - DependencyManagement.TryPostgreSQL(); - break; - default: - throw new Exception("ConnectionConfig.DbType is null"); - } + _Context = new SqlSugarContext(config); } - #endregion + //public SqlSugarClient(List config) + //{ - #region ADO Methods - /// - ///Datathis.operation - /// - public virtual IAdo Ado + //} + + + public IAdo Ado => Context.Ado; + + public AopProvider Aop => Context.Aop; + + public ICodeFirst CodeFirst => Context.CodeFirst; + + public Guid ContextID { get => this.Context.ContextID; set => this.Context.ContextID = value; } + public ConnectionConfig CurrentConnectionConfig { get => this.Context.CurrentConnectionConfig; set => this.Context.CurrentConnectionConfig=value; } + + public IDbFirst DbFirst => this.Context.DbFirst; + + public IDbMaintenance DbMaintenance =>this.Context.DbMaintenance; + + public EntityMaintenance EntityMaintenance { get =>this.EntityMaintenance; set =>this.EntityMaintenance=value; } + [Obsolete] + public EntityMaintenance EntityProvider { get =>this.EntityProvider ; set =>this.EntityProvider=value; } + + public bool IsSystemTablesConfig => this.Context.IsSystemTablesConfig; + + public QueryFilterProvider QueryFilter { get => this.Context.QueryFilter; set => this.Context.QueryFilter = value; } + [Obsolete] + public IContextMethods RewritableMethods { get => this.Context.RewritableMethods; set =>this.Context.RewritableMethods=value; } + [Obsolete] + public SimpleClient SimpleClient => this.Context.SimpleClient; + + public Dictionary TempItems { get => this.Context.TempItems; set =>this.Context.TempItems=value; } + public IContextMethods Utilities { get => this.Context.Utilities; set => this.Context.Utilities = value; } + + public void AddQueue(string sql, object parsmeters = null) { - get - { - if (this.ContextAdo == null) - { - var result = InstanceFactory.GetAdo(this.Context.CurrentConnectionConfig); - this.ContextAdo = result; - result.Context = this.Context; - return result; - } - return this.Context._Ado; - } + this.Context.AddQueue(sql, parsmeters); } - #endregion - #region Aop Log Methods - public virtual AopProvider Aop { get { return new AopProvider(this.Context); } } - #endregion - - #region Util Methods - [Obsolete("Use SqlSugarClient.Utilities")] - public virtual IContextMethods RewritableMethods + public void AddQueue(string sql, List parsmeters) { - get { return this.Context.Utilities; } - set { this.Context.Utilities = value; } + this.Context.AddQueue(sql, parsmeters); + } + + public void AddQueue(string sql, SugarParameter parsmeter) + { + this.Context.AddQueue(sql, parsmeter); + } + + public void Close() + { + this.Context.Close(); + } + + public IDeleteable Deleteable() where T : class, new() + { + return this.Context.Deleteable(); + } + + public IDeleteable Deleteable(dynamic primaryKeyValue) where T : class, new() + { + return this.Deleteable(primaryKeyValue); + } + + public IDeleteable Deleteable(dynamic[] primaryKeyValues) where T : class, new() + { + return this.Context.Deleteable(primaryKeyValues); + } + + public IDeleteable Deleteable(Expression> expression) where T : class, new() + { + return this.Context.Deleteable(expression); + } + + public IDeleteable Deleteable(List pkValue) where T : class, new() + { + return this.Context.Deleteable(pkValue); + } + + public IDeleteable Deleteable(List deleteObjs) where T : class, new() + { + return this.Context.Deleteable(deleteObjs); + } + + public IDeleteable Deleteable(T deleteObj) where T : class, new() + { + return this.Context.Deleteable(deleteObj); + } + + public void Dispose() + { + this.Context.Dispose(); } - public virtual IContextMethods Utilities - { - get - { - if (ContextRewritableMethods == null) - { - ContextRewritableMethods = new ContextMethods(); - ContextRewritableMethods.Context = this.Context; - } - return ContextRewritableMethods; - } - set { ContextRewritableMethods = value; } - } - #endregion - #region Queryable - /// - /// Get datebase time - /// - /// public DateTime GetDate() { - var sqlBuilder = InstanceFactory.GetSqlbuilder(this.Context.CurrentConnectionConfig); - return this.Ado.GetDateTime(sqlBuilder.FullSqlDateNow); - } - /// - /// Lambda Query operation - /// - public virtual ISugarQueryable Queryable() - { - - InitMppingInfo(); - var result = this.CreateQueryable(); - return result; - } - /// - /// Lambda Query operation - /// - public virtual ISugarQueryable Queryable(string shortName) - { - Check.Exception(shortName.HasValue() && shortName.Length > 20, ErrorMessage.GetThrowMessage("shortName参数长度不能超过20,你可能是想用这个方法 db.SqlQueryable(sql)而不是db.Queryable(shortName)", "Queryable.shortName max length 20")); - var queryable = Queryable(); - queryable.SqlBuilder.QueryBuilder.TableShortName = shortName; - return queryable; - } - /// - /// Lambda Query operation - /// - public virtual ISugarQueryable Queryable(string tableName, string shortName) - { - var queryable = Queryable(); - queryable.SqlBuilder.QueryBuilder.EntityName = tableName; - queryable.SqlBuilder.QueryBuilder.TableShortName = shortName; - return queryable; - } - public virtual ISugarQueryable Queryable(Expression> joinExpression) - { - InitMppingInfo(); - var types = new Type[] { typeof(T2) }; - var queryable = InstanceFactory.GetQueryable(this.CurrentConnectionConfig); - this.CreateQueryJoin(joinExpression, types, queryable); - return queryable; - } - public virtual ISugarQueryable Queryable(Expression> joinExpression) - { - InitMppingInfo(); - var types = new Type[] { typeof(T2) }; - var queryable = InstanceFactory.GetQueryable(this.CurrentConnectionConfig); - this.CreateQueryJoin(joinExpression, types, queryable); - return queryable; - } - public virtual ISugarQueryable Queryable(Expression> joinExpression) - { - InitMppingInfo(); - var types = new Type[] { typeof(T2), typeof(T3) }; - var queryable = InstanceFactory.GetQueryable(this.CurrentConnectionConfig); - this.CreateQueryJoin(joinExpression, types, queryable); - return queryable; - } - public virtual ISugarQueryable Queryable(Expression> joinExpression) - { - InitMppingInfo(); - var types = new Type[] { typeof(T2), typeof(T3) }; - var queryable = InstanceFactory.GetQueryable(this.CurrentConnectionConfig); - this.CreateQueryJoin(joinExpression, types, queryable); - return queryable; - } - public virtual ISugarQueryable Queryable(Expression> joinExpression) - { - InitMppingInfo(); - var types = new Type[] { typeof(T2), typeof(T3), typeof(T4) }; - var queryable = InstanceFactory.GetQueryable(this.CurrentConnectionConfig); - this.CreateQueryJoin(joinExpression, types, queryable); - return queryable; - } - public virtual ISugarQueryable Queryable(Expression> joinExpression) - { - InitMppingInfo(); - var types = new Type[] { typeof(T2), typeof(T3), typeof(T4) }; - var queryable = InstanceFactory.GetQueryable(this.CurrentConnectionConfig); - this.CreateQueryJoin(joinExpression, types, queryable); - return queryable; - } - public virtual ISugarQueryable Queryable(Expression> joinExpression) - { - InitMppingInfo(); - var types = new Type[] { typeof(T2), typeof(T3), typeof(T4), typeof(T5) }; - var queryable = InstanceFactory.GetQueryable(this.CurrentConnectionConfig); - this.CreateQueryJoin(joinExpression, types, queryable); - return queryable; - } - public virtual ISugarQueryable Queryable(Expression> joinExpression) - { - InitMppingInfo(); - var types = new Type[] { typeof(T2), typeof(T3), typeof(T4), typeof(T5) }; - var queryable = InstanceFactory.GetQueryable(this.CurrentConnectionConfig); - this.CreateQueryJoin(joinExpression, types, queryable); - return queryable; - } - public virtual ISugarQueryable Queryable(Expression> joinExpression) - { - InitMppingInfo(); - var types = new Type[] { typeof(T2), typeof(T3), typeof(T4), typeof(T5), typeof(T6) }; - var queryable = InstanceFactory.GetQueryable(this.CurrentConnectionConfig); - this.CreateQueryJoin(joinExpression, types, queryable); - return queryable; - } - public virtual ISugarQueryable Queryable(Expression> joinExpression) - { - InitMppingInfo(); - var types = new Type[] { typeof(T2), typeof(T3), typeof(T4), typeof(T5), typeof(T6) }; - var queryable = InstanceFactory.GetQueryable(this.CurrentConnectionConfig); - this.CreateQueryJoin(joinExpression, types, queryable); - return queryable; - } - public virtual ISugarQueryable Queryable(Expression> joinExpression) - { - InitMppingInfo(); - var types = new Type[] { typeof(T2), typeof(T3), typeof(T4), typeof(T5), typeof(T6), typeof(T7) }; - var queryable = InstanceFactory.GetQueryable(this.CurrentConnectionConfig); - this.CreateQueryJoin(joinExpression, types, queryable); - return queryable; - } - public virtual ISugarQueryable Queryable(Expression> joinExpression) - { - InitMppingInfo(); - var types = new Type[] { typeof(T2), typeof(T3), typeof(T4), typeof(T5), typeof(T6), typeof(T7) }; - var queryable = InstanceFactory.GetQueryable(this.CurrentConnectionConfig); - this.CreateQueryJoin(joinExpression, types, queryable); - return queryable; - } - public virtual ISugarQueryable Queryable(Expression> joinExpression) - { - InitMppingInfo(); - var types = new Type[] { typeof(T2), typeof(T3), typeof(T4), typeof(T5), typeof(T6), typeof(T7), typeof(T8) }; - var queryable = InstanceFactory.GetQueryable(this.CurrentConnectionConfig); - this.CreateQueryJoin(joinExpression, types, queryable); - return queryable; - } - public virtual ISugarQueryable Queryable(Expression> joinExpression) - { - InitMppingInfo(); - var types = new Type[] { typeof(T2), typeof(T3), typeof(T4), typeof(T5), typeof(T6), typeof(T7), typeof(T8) }; - var queryable = InstanceFactory.GetQueryable(this.CurrentConnectionConfig); - this.CreateQueryJoin(joinExpression, types, queryable); - return queryable; - } - #region 9-12 - public virtual ISugarQueryable Queryable(Expression> joinExpression) - { - InitMppingInfo(); - var types = new Type[] { typeof(T2), typeof(T3), typeof(T4), typeof(T5), typeof(T6), typeof(T7), typeof(T8), typeof(T9) }; - var queryable = InstanceFactory.GetQueryable(this.CurrentConnectionConfig); - this.CreateQueryJoin(joinExpression, types, queryable); - return queryable; - } - public virtual ISugarQueryable Queryable(Expression> joinExpression) - { - InitMppingInfo(); - var types = new Type[] { typeof(T2), typeof(T3), typeof(T4), typeof(T5), typeof(T6), typeof(T7), typeof(T8), typeof(T9) }; - var queryable = InstanceFactory.GetQueryable(this.CurrentConnectionConfig); - this.CreateQueryJoin(joinExpression, types, queryable); - return queryable; - } - public virtual ISugarQueryable Queryable(Expression> joinExpression) - { - InitMppingInfo(); - var types = new Type[] { typeof(T2), typeof(T3), typeof(T4), typeof(T5), typeof(T6), typeof(T7), typeof(T8), typeof(T9), typeof(T10) }; - var queryable = InstanceFactory.GetQueryable(this.CurrentConnectionConfig); - this.CreateQueryJoin(joinExpression, types, queryable); - return queryable; - } - public virtual ISugarQueryable Queryable(Expression> joinExpression) - { - InitMppingInfo(); - var types = new Type[] { typeof(T2), typeof(T3), typeof(T4), typeof(T5), typeof(T6), typeof(T7), typeof(T8), typeof(T9), typeof(T10) }; - var queryable = InstanceFactory.GetQueryable(this.CurrentConnectionConfig); - this.CreateQueryJoin(joinExpression, types, queryable); - return queryable; - } - public virtual ISugarQueryable Queryable(Expression> joinExpression) - { - InitMppingInfo(); - 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 queryable = InstanceFactory.GetQueryable(this.CurrentConnectionConfig); - this.CreateQueryJoin(joinExpression, types, queryable); - return queryable; - } - public virtual ISugarQueryable Queryable(Expression> joinExpression) - { - InitMppingInfo(); - 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 queryable = InstanceFactory.GetQueryable(this.CurrentConnectionConfig); - this.CreateQueryJoin(joinExpression, types, queryable); - return queryable; - } - public virtual ISugarQueryable Queryable(Expression> joinExpression) - { - InitMppingInfo(); - var types = new Type[] { typeof(T2), typeof(T3), typeof(T4), typeof(T5), typeof(T6), typeof(T7), typeof(T8), typeof(T9), typeof(T10), typeof(T11), typeof(T12) }; - var queryable = InstanceFactory.GetQueryable(this.CurrentConnectionConfig); - this.CreateQueryJoin(joinExpression, types, queryable); - return queryable; - } - public virtual ISugarQueryable Queryable(Expression> joinExpression) - { - InitMppingInfo(); - var types = new Type[] { typeof(T2), typeof(T3), typeof(T4), typeof(T5), typeof(T6), typeof(T7), typeof(T8), typeof(T9), typeof(T10), typeof(T11), typeof(T12) }; - var queryable = InstanceFactory.GetQueryable(this.CurrentConnectionConfig); - this.CreateQueryJoin(joinExpression, types, queryable); - return queryable; - } - #endregion - public virtual ISugarQueryable Queryable(Expression> joinExpression) where T : class, new() - { - InitMppingInfo(); - var types = new Type[] { typeof(T2) }; - var queryable = InstanceFactory.GetQueryable(this.CurrentConnectionConfig); - this.CreateEasyQueryJoin(joinExpression, types, queryable); - queryable.Where(joinExpression); - return queryable; - } - public virtual ISugarQueryable Queryable(Expression> joinExpression) where T : class, new() - { - InitMppingInfo(); - var types = new Type[] { typeof(T2), typeof(T3) }; - var queryable = InstanceFactory.GetQueryable(this.CurrentConnectionConfig); - this.CreateEasyQueryJoin(joinExpression, types, queryable); - queryable.Where(joinExpression); - return queryable; - } - public virtual ISugarQueryable Queryable(Expression> joinExpression) where T : class, new() - { - InitMppingInfo(); - var types = new Type[] { typeof(T2), typeof(T3), typeof(T4) }; - var queryable = InstanceFactory.GetQueryable(this.CurrentConnectionConfig); - this.CreateEasyQueryJoin(joinExpression, types, queryable); - queryable.Where(joinExpression); - return queryable; - } - public virtual ISugarQueryable Queryable(Expression> joinExpression) where T : class, new() - { - InitMppingInfo(); - var types = new Type[] { typeof(T2), typeof(T3), typeof(T4), typeof(T5) }; - var queryable = InstanceFactory.GetQueryable(this.CurrentConnectionConfig); - this.CreateEasyQueryJoin(joinExpression, types, queryable); - queryable.Where(joinExpression); - return queryable; - } - public virtual ISugarQueryable Queryable(Expression> joinExpression) where T : class, new() - { - InitMppingInfo(); - var types = new Type[] { typeof(T2), typeof(T3), typeof(T4), typeof(T5), typeof(T6) }; - var queryable = InstanceFactory.GetQueryable(this.CurrentConnectionConfig); - this.CreateEasyQueryJoin(joinExpression, types, queryable); - queryable.Where(joinExpression); - return queryable; - } - public virtual ISugarQueryable Queryable(Expression> joinExpression) where T : class, new() - { - InitMppingInfo(); - var types = new Type[] { typeof(T2), typeof(T3), typeof(T4), typeof(T5), typeof(T6), typeof(T7) }; - var queryable = InstanceFactory.GetQueryable(this.CurrentConnectionConfig); - this.CreateEasyQueryJoin(joinExpression, types, queryable); - queryable.Where(joinExpression); - return queryable; - } - public virtual ISugarQueryable Queryable(Expression> joinExpression) where T : class, new() - { - InitMppingInfo(); - var types = new Type[] { typeof(T2), typeof(T3), typeof(T4), typeof(T5), typeof(T6), typeof(T7), typeof(T8) }; - var queryable = InstanceFactory.GetQueryable(this.CurrentConnectionConfig); - this.CreateEasyQueryJoin(joinExpression, types, queryable); - queryable.Where(joinExpression); - return queryable; + return this.Context.GetDate(); } - #region 9-12 - public virtual ISugarQueryable Queryable(Expression> joinExpression) where T : class, new() + public SimpleClient GetSimpleClient() { - InitMppingInfo(); - var types = new Type[] { typeof(T2), typeof(T3), typeof(T4), typeof(T5), typeof(T6), typeof(T7), typeof(T8), typeof(T9) }; - var queryable = InstanceFactory.GetQueryable(this.CurrentConnectionConfig); - this.CreateEasyQueryJoin(joinExpression, types, queryable); - queryable.Where(joinExpression); - return queryable; + return this.Context.GetSimpleClient(); } - public virtual ISugarQueryable Queryable(Expression> joinExpression) where T : class, new() - { - InitMppingInfo(); - var types = new Type[] { typeof(T2), typeof(T3), typeof(T4), typeof(T5), typeof(T6), typeof(T7), typeof(T8), typeof(T9), typeof(T10) }; - var queryable = InstanceFactory.GetQueryable(this.CurrentConnectionConfig); - this.CreateEasyQueryJoin(joinExpression, types, queryable); - queryable.Where(joinExpression); - return queryable; - } - public virtual ISugarQueryable Queryable(Expression> joinExpression) where T : class, new() - { - InitMppingInfo(); - 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 queryable = InstanceFactory.GetQueryable(this.CurrentConnectionConfig); - this.CreateEasyQueryJoin(joinExpression, types, queryable); - queryable.Where(joinExpression); - return queryable; - } - public virtual ISugarQueryable Queryable(Expression> joinExpression) where T : class, new() - { - InitMppingInfo(); - var types = new Type[] { typeof(T2), typeof(T3), typeof(T4), typeof(T5), typeof(T6), typeof(T7), typeof(T8), typeof(T9), typeof(T10), typeof(T11), typeof(T12) }; - var queryable = InstanceFactory.GetQueryable(this.CurrentConnectionConfig); - this.CreateEasyQueryJoin(joinExpression, types, queryable); - queryable.Where(joinExpression); - return queryable; - } - public virtual ISugarQueryable Queryable(ISugarQueryable queryable) where T : class, new() - { - var sqlobj = queryable.ToSql(); - return this.SqlQueryable(sqlobj.Key).AddParameters(sqlobj.Value); - } - public virtual ISugarQueryable Queryable( - ISugarQueryable joinQueryable1, ISugarQueryable joinQueryable2, Expression> joinExpression) where T : class, new() where T2 : class, new() - { - return Queryable(joinQueryable1, joinQueryable2, JoinType.Inner, joinExpression); - } - public virtual ISugarQueryable Queryable( - ISugarQueryable joinQueryable1, ISugarQueryable joinQueryable2, JoinType joinType, Expression> joinExpression) where T : class, new() where T2 : 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'"); - var sqlBuilder = InstanceFactory.GetSqlbuilder(this.Context.CurrentConnectionConfig); + public SimpleClient GetSimpleClient() where T : class, new() + { + return this.Context.GetSimpleClient(); + } - sqlBuilder.Context = this.Context; - InitMppingInfo(); - var types = new Type[] { typeof(T2) }; - var queryable = InstanceFactory.GetQueryable(this.CurrentConnectionConfig); - queryable.Context = this.Context; - queryable.SqlBuilder = sqlBuilder; - queryable.QueryBuilder = InstanceFactory.GetQueryBuilder(this.CurrentConnectionConfig); - queryable.QueryBuilder.JoinQueryInfos = new List(); - queryable.QueryBuilder.Builder = sqlBuilder; - queryable.QueryBuilder.Context = this.Context; - queryable.QueryBuilder.EntityType = typeof(T); - queryable.QueryBuilder.LambdaExpressions = InstanceFactory.GetLambdaExpressions(this.CurrentConnectionConfig); + public void InitMppingInfo(Type type) + { + this.Context.InitMppingInfo(type); + } - //master - var shortName1 = joinExpression.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); + public IInsertable Insertable(Dictionary columnDictionary) where T : class, new() + { + return this.Context.Insertable(columnDictionary); + } - //join table 1 - var shortName2 = joinExpression.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(joinExpression, ResolveExpressType.WhereMultiple); - queryable.QueryBuilder.JoinQueryInfos.Add(new JoinQueryInfo() { JoinIndex = 0, JoinType = joinType, JoinWhere = exp.GetResultString(), TableName = sqlBuilder.GetPackTable(sql2, shortName2) }); + public IInsertable Insertable(dynamic insertDynamicObject) where T : class, new() + { + return this.Context.Insertable(insertDynamicObject); + } - return queryable; + public IInsertable Insertable(List insertObjs) where T : class, new() + { + return this.Insertable(insertObjs); } - #endregion - public virtual ISugarQueryable UnionAll(params ISugarQueryable[] queryables) where T : class, new() + public IInsertable Insertable(T insertObj) where T : class, new() { - var sqlBuilder = InstanceFactory.GetSqlbuilder(this.Context.CurrentConnectionConfig); - Check.Exception(queryables.IsNullOrEmpty(), "UnionAll.queryables is null "); - int i = 1; - List>> allItems = new List>>(); - foreach (var item in queryables) - { - var sqlObj = item.ToSql(); - string sql = sqlObj.Key; - UtilMethods.RepairReplicationParameters(ref sql, sqlObj.Value.ToArray(), i, "UnionAll"); - if (sqlObj.Value.HasValue()) - allItems.Add(new KeyValuePair>(sql, sqlObj.Value)); - else - allItems.Add(new KeyValuePair>(sql, new List())); - i++; - } - var allSql = sqlBuilder.GetUnionAllSql(allItems.Select(it => it.Key).ToList()); - var allParameters = allItems.SelectMany(it => it.Value).ToArray(); - var resulut = this.Context.Queryable().AS(UtilMethods.GetPackTable(allSql, "unionTable")).With(SqlWith.Null); - resulut.AddParameters(allParameters); - return resulut.Select(sqlBuilder.SqlSelectAll); + return this.Insertable(insertObj); } - public virtual ISugarQueryable UnionAll(List> queryables) where T : class, new() - { - Check.Exception(queryables.IsNullOrEmpty(), "UnionAll.queryables is null "); - return UnionAll(queryables.ToArray()); - } - public virtual ISugarQueryable Union(params ISugarQueryable[] queryables) where T : class, new() - { - var sqlBuilder = InstanceFactory.GetSqlbuilder(this.Context.CurrentConnectionConfig); - Check.Exception(queryables.IsNullOrEmpty(), "UnionAll.queryables is null "); - int i = 1; - List>> allItems = new List>>(); - foreach (var item in queryables) - { - var sqlObj = item.ToSql(); - string sql = sqlObj.Key; - UtilMethods.RepairReplicationParameters(ref sql, sqlObj.Value.ToArray(), i, "Union"); - if (sqlObj.Value.HasValue()) - allItems.Add(new KeyValuePair>(sql, sqlObj.Value)); - else - allItems.Add(new KeyValuePair>(sql, new List())); - i++; - } - var allSql = sqlBuilder.GetUnionSql(allItems.Select(it => it.Key).ToList()); - var allParameters = allItems.SelectMany(it => it.Value).ToArray(); - var resulut = this.Context.Queryable().AS(UtilMethods.GetPackTable(allSql, "unionTable")).With(SqlWith.Null); - resulut.AddParameters(allParameters); - return resulut.Select(sqlBuilder.SqlSelectAll); - } - public virtual ISugarQueryable Union(List> queryables) where T : class, new() - { - Check.Exception(queryables.IsNullOrEmpty(), "Union.queryables is null "); - return Union(queryables.ToArray()); - } - #endregion - #region SqlQueryable - public ISugarQueryable SqlQueryable(string sql) where T : class, new() + public IInsertable Insertable(T[] insertObjs) where T : class, new() { - var sqlBuilder = InstanceFactory.GetSqlbuilder(this.Context.CurrentConnectionConfig); - return this.Context.Queryable().AS(sqlBuilder.GetPackTable(sql, sqlBuilder.GetDefaultShortName())).With(SqlWith.Null).Select(sqlBuilder.GetDefaultShortName() + ".*"); + return this.Context.Insertable(insertObjs); } - #endregion - #region Insertable - public virtual IInsertable Insertable(T[] insertObjs) where T : class, new() + public void Open() { - InitMppingInfo(); - InsertableProvider result = this.CreateInsertable(insertObjs); - return result; + this.Context.Open(); } - public virtual IInsertable Insertable(List insertObjs) where T : class, new() - { - if (insertObjs == null|| insertObjs.IsNullOrEmpty()) - { - insertObjs = new List(); - insertObjs.Add(default(T)); - } - return this.Context.Insertable(insertObjs.ToArray()); - } - public virtual IInsertable Insertable(T insertObj) where T : class, new() - { - return this.Context.Insertable(new T[] { insertObj }); - } - public virtual IInsertable Insertable(Dictionary columnDictionary) where T : class, new() - { - InitMppingInfo(); - Check.Exception(columnDictionary == null || columnDictionary.Count == 0, "Insertable.columnDictionary can't be null"); - var insertObject = this.Context.Utilities.DeserializeObject(this.Context.Utilities.SerializeObject(columnDictionary)); - var columns = columnDictionary.Select(it => it.Key).ToList(); - return this.Context.Insertable(insertObject).InsertColumns(columns.ToArray()); ; - } - public virtual IInsertable Insertable(dynamic insertDynamicObject) where T : class, new() - { - InitMppingInfo(); - if (insertDynamicObject is T) - { - return this.Context.Insertable((T)insertDynamicObject); - } - else - { - var columns = ((object)insertDynamicObject).GetType().GetProperties().Select(it => it.Name).ToList(); - Check.Exception(columns.IsNullOrEmpty(), "Insertable.updateDynamicObject can't be null"); - T insertObject = this.Context.Utilities.DeserializeObject(this.Context.Utilities.SerializeObject(insertDynamicObject)); - return this.Context.Insertable(insertObject).InsertColumns(columns.ToArray()); - } - } - #endregion - #region Deleteable - public virtual IDeleteable Deleteable() where T : class, new() + public ISugarQueryable Queryable(string tableName, string shortName) { - InitMppingInfo(); - DeleteableProvider result = this.CreateDeleteable(); - return result; + return this.Context.Queryable(tableName, shortName); } - public virtual IDeleteable Deleteable(Expression> expression) where T : class, new() - { - InitMppingInfo(); - return this.Context.Deleteable().Where(expression); - } - public virtual IDeleteable Deleteable(dynamic primaryKeyValue) where T : class, new() - { - InitMppingInfo(); - return this.Context.Deleteable().In(primaryKeyValue); - } - public virtual IDeleteable Deleteable(dynamic[] primaryKeyValues) where T : class, new() - { - InitMppingInfo(); - return this.Context.Deleteable().In(primaryKeyValues); - } - public virtual IDeleteable Deleteable(List pkValue) where T : class, new() - { - InitMppingInfo(); - return this.Context.Deleteable().In(pkValue); - } - public virtual IDeleteable Deleteable(T deleteObj) where T : class, new() - { - InitMppingInfo(); - return this.Context.Deleteable().Where(deleteObj); - } - public virtual IDeleteable Deleteable(List deleteObjs) where T : class, new() - { - InitMppingInfo(); - return this.Context.Deleteable().Where(deleteObjs); - } - #endregion - #region Updateable - public virtual IUpdateable Updateable(T[] UpdateObjs) where T : class, new() + public ISugarQueryable Queryable(Expression> joinExpression) where T : class, new() { - InitMppingInfo(); - UpdateableProvider result = this.CreateUpdateable(UpdateObjs); - return result; + return this.Context.Queryable(joinExpression); } - public virtual IUpdateable Updateable(List UpdateObjs) where T : class, new() - { - Check.ArgumentNullException(UpdateObjs, "Updateable.UpdateObjs can't be null"); - return Updateable(UpdateObjs.ToArray()); - } - public virtual IUpdateable Updateable(T UpdateObj) where T : class, new() - { - return this.Context.Updateable(new T[] { UpdateObj }); - } - public virtual IUpdateable Updateable() where T : class, new() - { - var result = this.Context.Updateable(new T[] { new T() }); - result.UpdateParameterIsNull = true; - return result; - } - public virtual IUpdateable Updateable(Expression> columns) where T : class, new() - { - var result = this.Context.Updateable().SetColumns(columns); - result.UpdateParameterIsNull = true; - return result; - } - public virtual IUpdateable Updateable(Expression> columns) where T : class, new() - { - var result = this.Context.Updateable().SetColumns(columns); - result.UpdateParameterIsNull = true; - return result; - } - - public virtual IUpdateable Updateable(Dictionary columnDictionary) where T : class, new() + public ISugarQueryable Queryable(Expression> joinExpression) { - InitMppingInfo(); - Check.Exception(columnDictionary == null || columnDictionary.Count == 0, "Updateable.columnDictionary can't be null"); - var updateObject = this.Context.Utilities.DeserializeObject(this.Context.Utilities.SerializeObject(columnDictionary)); - var columns = columnDictionary.Select(it => it.Key).ToList(); - return this.Context.Updateable(updateObject).UpdateColumns(columns.ToArray()); ; + return this.Context.Queryable(joinExpression); + } + + public ISugarQueryable Queryable(Expression> joinExpression) + { + return this.Context.Queryable(joinExpression); + } + + public ISugarQueryable Queryable(Expression> joinExpression) where T : class, new() + { + return this.Context.Queryable(joinExpression); + } + + public ISugarQueryable Queryable(Expression> joinExpression) + { + return this.Context.Queryable(joinExpression); + } + + public ISugarQueryable Queryable(Expression> joinExpression) + { + return this.Context.Queryable(joinExpression); + } + + public ISugarQueryable Queryable(Expression> joinExpression) where T : class, new() + { + return this.Context.Queryable(joinExpression); + } + + public ISugarQueryable Queryable(Expression> joinExpression) + { + return this.Context.Queryable(joinExpression); + } + + public ISugarQueryable Queryable(Expression> joinExpression) + { + return this.Context.Queryable(joinExpression); + } + + public ISugarQueryable Queryable(Expression> joinExpression) where T : class, new() + { + return this.Context.Queryable(joinExpression); + } + + public ISugarQueryable Queryable(Expression> joinExpression) + { + return this.Context.Queryable(joinExpression); + } + + public ISugarQueryable Queryable(Expression> joinExpression) + { + return this.Context.Queryable(joinExpression); + } + + public ISugarQueryable Queryable(Expression> joinExpression) where T : class, new() + { + return this.Context.Queryable(joinExpression); + } + + public ISugarQueryable Queryable(Expression> joinExpression) + { + return this.Context.Queryable(joinExpression); + } + + public ISugarQueryable Queryable(Expression> joinExpression) + { + return this.Context.Queryable(joinExpression); + } + + public ISugarQueryable Queryable(Expression> joinExpression) where T : class, new() + { + return this.Context.Queryable(joinExpression); + } + + public ISugarQueryable Queryable(Expression> joinExpression) + { + return this.Context.Queryable(joinExpression); + } + + public ISugarQueryable Queryable(Expression> joinExpression) + { + return this.Context.Queryable(joinExpression); + } + + public ISugarQueryable Queryable(Expression> joinExpression) where T : class, new() + { + return this.Context.Queryable(joinExpression); + } + + public ISugarQueryable Queryable(Expression> joinExpression) + { + return this.Context.Queryable(joinExpression); + } + + public ISugarQueryable Queryable(Expression> joinExpression) + { + return this.Context.Queryable(joinExpression); + } + + public ISugarQueryable Queryable(Expression> joinExpression) where T : class, new() + { + return this.Context.Queryable(joinExpression); + } + + public ISugarQueryable Queryable(Expression> joinExpression) + { + return this.Context.Queryable(joinExpression); + } + + public ISugarQueryable Queryable(Expression> joinExpression) + { + return this.Context.Queryable(joinExpression); + } + + public ISugarQueryable Queryable(Expression> joinExpression) where T : class, new() + { + return this.Context.Queryable(joinExpression); + } + + public ISugarQueryable Queryable(Expression> joinExpression) + { + return this.Context.Queryable(joinExpression); + } + + public ISugarQueryable Queryable(Expression> joinExpression) + { + return this.Context.Queryable(joinExpression); + } + + public ISugarQueryable Queryable(Expression> joinExpression) where T : class, new() + { + return this.Context.Queryable(joinExpression); + } + + public ISugarQueryable Queryable(Expression> joinExpression) + { + return this.Context.Queryable(joinExpression); + } + + public ISugarQueryable Queryable(Expression> joinExpression) + { + return this.Context.Queryable(joinExpression); + } + + public ISugarQueryable Queryable(Expression> joinExpression) where T : class, new() + { + return this.Context.Queryable(joinExpression); + } + + public ISugarQueryable Queryable(Expression> joinExpression) + { + return this.Context.Queryable(joinExpression); + } + + public ISugarQueryable Queryable(Expression> joinExpression) + { + return this.Context.Queryable(joinExpression); + } + + public ISugarQueryable Queryable(ISugarQueryable joinQueryable1, ISugarQueryable joinQueryable2, Expression> joinExpression) + where T : class, new() + where T2 : class, new() + { + return this.Context.Queryable(joinQueryable1,joinQueryable2,joinExpression); + } + + public ISugarQueryable Queryable(ISugarQueryable joinQueryable1, ISugarQueryable joinQueryable2, JoinType joinType, Expression> joinExpression) + where T : class, new() + where T2 : class, new() + { + return this.Context.Queryable(joinQueryable1, joinQueryable2,joinType, joinExpression); + } + + public ISugarQueryable Queryable() + { + return this.Context.Queryable(); + } + + public ISugarQueryable Queryable(ISugarQueryable queryable) where T : class, new() + { + return this.Context.Queryable(queryable); + } + + public ISugarQueryable Queryable(string shortName) + { + return this.Context.Queryable(shortName); } - public virtual IUpdateable Updateable(dynamic updateDynamicObject) where T : class, new() - { - InitMppingInfo(); - if (updateDynamicObject is T) - { - return this.Context.Updateable((T)updateDynamicObject); - } - else - { - var columns = ((object)updateDynamicObject).GetType().GetProperties().Select(it => it.Name).ToList(); - Check.Exception(columns.IsNullOrEmpty(), "Updateable.updateDynamicObject can't be null"); - T updateObject = this.Context.Utilities.DeserializeObject(this.Context.Utilities.SerializeObject(updateDynamicObject)); - return this.Context.Updateable(updateObject).UpdateColumns(columns.ToArray()); ; - } - } - #endregion - #region Saveable public ISaveable Saveable(List saveObjects) where T : class, new() { - return new SaveableProvider(this, saveObjects); + return this.Context.Saveable(saveObjects); } + public ISaveable Saveable(T saveObject) where T : class, new() { - return new SaveableProvider(this, saveObject); + return this.Context.Saveable(saveObject); } - #endregion - #region DbFirst - public virtual IDbFirst DbFirst - { - get - { - IDbFirst dbFirst = InstanceFactory.GetDbFirst(this.Context.CurrentConnectionConfig); - dbFirst.Context = this.Context; - dbFirst.Init(); - return dbFirst; - } - } - #endregion - - #region CodeFirst - public virtual ICodeFirst CodeFirst - { - get - { - ICodeFirst codeFirst = InstanceFactory.GetCodeFirst(this.Context.CurrentConnectionConfig); - codeFirst.Context = this.Context; - return codeFirst; - } - } - #endregion - - #region Db Maintenance - public virtual IDbMaintenance DbMaintenance - { - get - { - if (this.Context._DbMaintenance == null) - { - IDbMaintenance maintenance = InstanceFactory.GetDbMaintenance(this.Context.CurrentConnectionConfig); - this.Context._DbMaintenance = maintenance; - maintenance.Context = this.Context; - } - return this.Context._DbMaintenance; - } - } - #endregion - - #region Entity Maintenance - [Obsolete("Use SqlSugarClient.EntityMaintenance")] - public virtual EntityMaintenance EntityProvider - { - get { return this.Context.EntityMaintenance; } - set { this.Context.EntityMaintenance = value; } - } - public virtual EntityMaintenance EntityMaintenance - { - get - { - if (this.Context._EntityProvider == null) - { - this.Context._EntityProvider = new EntityMaintenance(); - this.Context._EntityProvider.Context = this.Context; - } - return this.Context._EntityProvider; - } - set { this.Context._EntityProvider = value; } - } - #endregion - - #region Gobal Filter - public virtual QueryFilterProvider QueryFilter - { - get - { - if (this.Context._QueryFilterProvider == null) - { - this.Context._QueryFilterProvider = new QueryFilterProvider(); - this.Context._QueryFilterProvider.Context = this.Context; - } - return this.Context._QueryFilterProvider; - } - set { this.Context._QueryFilterProvider = value; } - } - #endregion - - #region SimpleClient - [Obsolete("Use SqlSugarClient.GetSimpleClient() Or SqlSugarClient.GetSimpleClient() ")] - public virtual SimpleClient SimpleClient - { - get - { - if (this.Context._SimpleClient == null) - this.Context._SimpleClient = new SimpleClient(this.Context); - return this.Context._SimpleClient; - } - } - public virtual SimpleClient GetSimpleClient() where T : class, new() - { - return new SimpleClient(this.Context); - } - public virtual SimpleClient GetSimpleClient() - { - if (this.Context._SimpleClient == null) - this.Context._SimpleClient = new SimpleClient(this.Context); - return this.Context._SimpleClient; - } - #endregion - - #region Dispose OR Close - public virtual void Close() - { - if (this.Context.Ado != null) - this.Context.Ado.Close(); - } - public virtual void Open() - { - if (this.Context.Ado != null) - this.Context.Ado.Open(); - } - public virtual void Dispose() - { - if (this.Context.Ado != null) - this.Context.Ado.Dispose(); - } - #endregion - - #region Queue public int SaveQueues(bool isTran = true) { - return SaveQueuesProvider(isTran, (sql, parameters) => { return this.Ado.ExecuteCommand(sql, parameters); }); + return this.Context.SaveQueues(isTran); + } + + public Tuple, List, List, List, List, List, List> SaveQueues(bool isTran = true) + { + return this.Context.SaveQueues(isTran); + } + + public Tuple, List, List, List, List, List> SaveQueues(bool isTran = true) + { + return this.Context.SaveQueues(isTran); + } + + public Tuple, List, List, List, List> SaveQueues(bool isTran = true) + { + return this.Context.SaveQueues(isTran); + } + + public Tuple, List, List, List> SaveQueues(bool isTran = true) + { + return this.Context.SaveQueues(isTran); + } + + public Tuple, List, List> SaveQueues(bool isTran = true) + { + return this.Context.SaveQueues(isTran); + } + + public Tuple, List> SaveQueues(bool isTran = true) + { + return this.Context.SaveQueues(isTran); + } + + public List SaveQueues(bool isTran = true) + { + return this.Context.SaveQueues(isTran); } public Task SaveQueuesAsync(bool isTran = true) { - var result = new Task(() => { return SaveQueues(isTran); }); - result.Start(); - return result; - } - public List SaveQueues(bool isTran = true) - { - return SaveQueuesProvider(isTran, (sql, parameters) => { return this.Ado.SqlQuery(sql, parameters); }); - } - public Task> SaveQueuesAsync(bool isTran = true) - { - var result = new Task>(() => { return SaveQueues(); }); - result.Start(); - return result; - } - public Tuple, List> SaveQueues(bool isTran = true) - { - return SaveQueuesProvider(isTran, (sql, parameters) => { return this.Ado.SqlQuery(sql, parameters); }); - } - public Task, List>> SaveQueuesAsync(bool isTran = true) - { - var result = new Task, List>>(() => { return SaveQueues(isTran); }); - result.Start(); - return result; - } - public Tuple, List, List> SaveQueues(bool isTran = true) - { - return SaveQueuesProvider(isTran, (sql, parameters) => { return this.Ado.SqlQuery(sql, parameters); }); - } - public Task, List, List>> SaveQueuesAsync(bool isTran = true) - { - var result = new Task, List, List>>(() => { return SaveQueues(isTran); }); - result.Start(); - return result; - } - public Tuple, List, List, List> SaveQueues(bool isTran = true) - { - return SaveQueuesProvider(isTran, (sql, parameters) => { return this.Ado.SqlQuery(sql, parameters); }); - } - public Task, List, List, List>> SaveQueuesAsync(bool isTran = true) - { - var result = new Task, List, List, List>>(() => { return SaveQueues(isTran); }); - result.Start(); - return result; - } - public Tuple, List, List, List, List> SaveQueues(bool isTran = true) - { - return SaveQueuesProvider(isTran, (sql, parameters) => { return this.Ado.SqlQuery(sql, parameters); }); - } - public Task, List, List, List, List>> SaveQueuesAsync(bool isTran = true) - { - var result = new Task, List, List, List, List>>(() => { return SaveQueues(isTran); }); - result.Start(); - return result; - } - public Tuple, List, List, List, List, List> SaveQueues(bool isTran = true) - { - return SaveQueuesProvider(isTran, (sql, parameters) => { return this.Ado.SqlQuery(sql, parameters); }); - } - public Task, List, List, List, List, List>> SaveQueuesAsync(bool isTran = true) - { - var result = new Task, List, List, List, List, List>>(() => { return SaveQueues(isTran); }); - result.Start(); - return result; - } - public Tuple, List, List, List, List, List, List> SaveQueues(bool isTran = true) - { - return SaveQueuesProvider(isTran, (sql, parameters) => { return this.Ado.SqlQuery(sql, parameters); }); + return this.Context.SaveQueuesAsync(isTran); } + public Task, List, List, List, List, List, List>> SaveQueuesAsync(bool isTran = true) { - var result = new Task, List, List, List, List, List, List>>(() => { return SaveQueues(isTran); }); - result.Start(); - return result; - } - public void AddQueue(string sql, object parsmeters=null) - { - if (Queues == null) - { - Queues = new QueueList(); - } - this.Queues.Add(sql,this.Context.Ado.GetParameters(parsmeters)); - } - public void AddQueue(string sql, SugarParameter parsmeter) - { - if (Queues == null) - { - Queues = new QueueList(); - } - this.Queues.Add(sql, new List() { parsmeter }); - } - public void AddQueue(string sql, List parsmeters) - { - if (Queues == null) - { - Queues = new QueueList(); - } - this.Queues.Add(sql, parsmeters); - } - public QueueList Queues = new QueueList(); - - private T SaveQueuesProvider(bool isTran, Func, T> func) - { - try - { - if (this.CurrentConnectionConfig.DbType == DbType.Oracle) { - throw new Exception("Oracle no support SaveQueues"); - } - if (this.Queues == null || this.Queues.Count == 0) return default(T); - isTran = isTran && this.Ado.Transaction == null; - if (isTran) this.Ado.BeginTran(); - StringBuilder sqlBuilder = new StringBuilder(); - var parsmeters = new List(); - var index = 1; - if (this.Queues.HasValue()) - { - foreach (var item in Queues) - { - if (item.Sql == null) - item.Sql = string.Empty; - if (item.Parameters == null) - item.Parameters = new SugarParameter[] { }; - var itemParsmeters = item.Parameters.OrderByDescending(it => it.ParameterName.Length).ToList(); - List addParameters = new List(); - var itemSql = item.Sql; - foreach (var itemParameter in itemParsmeters) - { - var newName = itemParameter.ParameterName + "_q_" + index; - SugarParameter parameter = new SugarParameter(newName, itemParameter.Value); - parameter.DbType = itemParameter.DbType; - itemSql = UtilMethods.ReplaceSqlParameter(itemSql, itemParameter, newName); - addParameters.Add(parameter); - } - parsmeters.AddRange(addParameters); - itemSql = itemSql.TrimEnd(';')+";"; - sqlBuilder.AppendLine(itemSql); - index++; - } - } - this.Queues.Clear(); - var result = func(sqlBuilder.ToString(), parsmeters); - if (isTran) this.Ado.CommitTran(); - return result; - } - catch (Exception ex) - { - if (isTran) this.Ado.RollbackTran(); - throw ex; - } + return this.Context.SaveQueuesAsync(isTran); } - #endregion + public Task, List, List, List, List, List>> SaveQueuesAsync(bool isTran = true) + { + return this.Context.SaveQueuesAsync(isTran); + } + + public Task, List, List, List, List>> SaveQueuesAsync(bool isTran = true) + { + return this.Context.SaveQueuesAsync(isTran); + } + + public Task, List, List, List>> SaveQueuesAsync(bool isTran = true) + { + return this.Context.SaveQueuesAsync < T, T2, T3, T4 > (isTran); + } + + public Task, List, List>> SaveQueuesAsync(bool isTran = true) + { + return this.Context.SaveQueuesAsync(isTran); + } + + public Task, List>> SaveQueuesAsync(bool isTran = true) + { + return this.Context.SaveQueuesAsync(isTran); + } + + public Task> SaveQueuesAsync(bool isTran = true) + { + return this.Context.SaveQueuesAsync(isTran); + } + + public ISugarQueryable SqlQueryable(string sql) where T : class, new() + { + return this.Context.SqlQueryable(sql); + } + + public ISugarQueryable Union(List> queryables) where T : class, new() + { + return this.Context.Union(queryables); + } + + public ISugarQueryable Union(params ISugarQueryable[] queryables) where T : class, new() + { + return this.Context.Union(queryables); + } + + public ISugarQueryable UnionAll(List> queryables) where T : class, new() + { + return this.Context.UnionAll(queryables); + } + + public ISugarQueryable UnionAll(params ISugarQueryable[] queryables) where T : class, new() + { + return this.Context.UnionAll(queryables); + } + + public IUpdateable Updateable() where T : class, new() + { + return this.Context.Updateable(); + } + + public IUpdateable Updateable(Dictionary columnDictionary) where T : class, new() + { + return this.Context.Updateable(columnDictionary); + } + + public IUpdateable Updateable(dynamic updateDynamicObject) where T : class, new() + { + return this.Context.Updateable(updateDynamicObject); + } + + public IUpdateable Updateable(Expression> columns) where T : class, new() + { + return this.Context.Updateable(columns); + } + + public IUpdateable Updateable(Expression> columns) where T : class, new() + { + return this.Context.Updateable(columns); + } + + public IUpdateable Updateable(List UpdateObjs) where T : class, new() + { + return this.Context.Updateable(UpdateObjs); + } + + public IUpdateable Updateable(T UpdateObj) where T : class, new() + { + return this.Context.Updateable(UpdateObj); + } + + public IUpdateable Updateable(T[] UpdateObjs) where T : class, new() + { + return this.Context.Updateable(UpdateObjs); + } } } diff --git a/Src/Asp.Net/SqlSugar/SqlSugarContext.cs b/Src/Asp.Net/SqlSugar/SqlSugarContext.cs new file mode 100644 index 000000000..4a674be42 --- /dev/null +++ b/Src/Asp.Net/SqlSugar/SqlSugarContext.cs @@ -0,0 +1,969 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Dynamic; +using System.Linq; +using System.Linq.Expressions; +using System.Text; +using System.Text.RegularExpressions; +using System.Threading.Tasks; +namespace SqlSugar +{ + /// + /// ** description:Create datathis.access object + /// ** author:sunkaixuan + /// ** date:2017/1/2 + /// ** email:610262374@qq.com + /// + public partial class SqlSugarContext : IDisposable, ISqlSugarClient + { + + #region Constructor + public SqlSugarContext(ConnectionConfig config) + { + this.Context = this; + this.CurrentConnectionConfig = config; + this.ContextID = Guid.NewGuid(); + Check.ArgumentNullException(config, "config is null"); + switch (config.DbType) + { + case DbType.MySql: + DependencyManagement.TryMySqlData(); + break; + case DbType.SqlServer: + break; + case DbType.Sqlite: + DependencyManagement.TrySqlite(); + break; + case DbType.Oracle: + DependencyManagement.TryOracle(); + break; + case DbType.PostgreSQL: + DependencyManagement.TryPostgreSQL(); + break; + default: + throw new Exception("ConnectionConfig.DbType is null"); + } + } + #endregion + + #region ADO Methods + /// + ///Datathis.operation + /// + public virtual IAdo Ado + { + get + { + if (this.ContextAdo == null) + { + var result = InstanceFactory.GetAdo(this.Context.CurrentConnectionConfig); + this.ContextAdo = result; + result.Context = this.Context; + return result; + } + return this.Context._Ado; + } + } + #endregion + + #region Aop Log Methods + public virtual AopProvider Aop { get { return new AopProvider(this.Context); } } + #endregion + + #region Util Methods + [Obsolete("Use SqlSugarClient.Utilities")] + public virtual IContextMethods RewritableMethods + { + get { return this.Context.Utilities; } + set { this.Context.Utilities = value; } + } + public virtual IContextMethods Utilities + { + get + { + if (ContextRewritableMethods == null) + { + ContextRewritableMethods = new ContextMethods(); + ContextRewritableMethods.Context = this.Context; + } + return ContextRewritableMethods; + } + set { ContextRewritableMethods = value; } + } + #endregion + + #region Queryable + /// + /// Get datebase time + /// + /// + public DateTime GetDate() + { + var sqlBuilder = InstanceFactory.GetSqlbuilder(this.Context.CurrentConnectionConfig); + return this.Ado.GetDateTime(sqlBuilder.FullSqlDateNow); + } + /// + /// Lambda Query operation + /// + public virtual ISugarQueryable Queryable() + { + + InitMppingInfo(); + var result = this.CreateQueryable(); + return result; + } + /// + /// Lambda Query operation + /// + public virtual ISugarQueryable Queryable(string shortName) + { + Check.Exception(shortName.HasValue() && shortName.Length > 20, ErrorMessage.GetThrowMessage("shortName参数长度不能超过20,你可能是想用这个方法 db.SqlQueryable(sql)而不是db.Queryable(shortName)", "Queryable.shortName max length 20")); + var queryable = Queryable(); + queryable.SqlBuilder.QueryBuilder.TableShortName = shortName; + return queryable; + } + /// + /// Lambda Query operation + /// + public virtual ISugarQueryable Queryable(string tableName, string shortName) + { + var queryable = Queryable(); + queryable.SqlBuilder.QueryBuilder.EntityName = tableName; + queryable.SqlBuilder.QueryBuilder.TableShortName = shortName; + return queryable; + } + public virtual ISugarQueryable Queryable(Expression> joinExpression) + { + InitMppingInfo(); + var types = new Type[] { typeof(T2) }; + var queryable = InstanceFactory.GetQueryable(this.CurrentConnectionConfig); + this.CreateQueryJoin(joinExpression, types, queryable); + return queryable; + } + public virtual ISugarQueryable Queryable(Expression> joinExpression) + { + InitMppingInfo(); + var types = new Type[] { typeof(T2) }; + var queryable = InstanceFactory.GetQueryable(this.CurrentConnectionConfig); + this.CreateQueryJoin(joinExpression, types, queryable); + return queryable; + } + public virtual ISugarQueryable Queryable(Expression> joinExpression) + { + InitMppingInfo(); + var types = new Type[] { typeof(T2), typeof(T3) }; + var queryable = InstanceFactory.GetQueryable(this.CurrentConnectionConfig); + this.CreateQueryJoin(joinExpression, types, queryable); + return queryable; + } + public virtual ISugarQueryable Queryable(Expression> joinExpression) + { + InitMppingInfo(); + var types = new Type[] { typeof(T2), typeof(T3) }; + var queryable = InstanceFactory.GetQueryable(this.CurrentConnectionConfig); + this.CreateQueryJoin(joinExpression, types, queryable); + return queryable; + } + public virtual ISugarQueryable Queryable(Expression> joinExpression) + { + InitMppingInfo(); + var types = new Type[] { typeof(T2), typeof(T3), typeof(T4) }; + var queryable = InstanceFactory.GetQueryable(this.CurrentConnectionConfig); + this.CreateQueryJoin(joinExpression, types, queryable); + return queryable; + } + public virtual ISugarQueryable Queryable(Expression> joinExpression) + { + InitMppingInfo(); + var types = new Type[] { typeof(T2), typeof(T3), typeof(T4) }; + var queryable = InstanceFactory.GetQueryable(this.CurrentConnectionConfig); + this.CreateQueryJoin(joinExpression, types, queryable); + return queryable; + } + public virtual ISugarQueryable Queryable(Expression> joinExpression) + { + InitMppingInfo(); + var types = new Type[] { typeof(T2), typeof(T3), typeof(T4), typeof(T5) }; + var queryable = InstanceFactory.GetQueryable(this.CurrentConnectionConfig); + this.CreateQueryJoin(joinExpression, types, queryable); + return queryable; + } + public virtual ISugarQueryable Queryable(Expression> joinExpression) + { + InitMppingInfo(); + var types = new Type[] { typeof(T2), typeof(T3), typeof(T4), typeof(T5) }; + var queryable = InstanceFactory.GetQueryable(this.CurrentConnectionConfig); + this.CreateQueryJoin(joinExpression, types, queryable); + return queryable; + } + public virtual ISugarQueryable Queryable(Expression> joinExpression) + { + InitMppingInfo(); + var types = new Type[] { typeof(T2), typeof(T3), typeof(T4), typeof(T5), typeof(T6) }; + var queryable = InstanceFactory.GetQueryable(this.CurrentConnectionConfig); + this.CreateQueryJoin(joinExpression, types, queryable); + return queryable; + } + public virtual ISugarQueryable Queryable(Expression> joinExpression) + { + InitMppingInfo(); + var types = new Type[] { typeof(T2), typeof(T3), typeof(T4), typeof(T5), typeof(T6) }; + var queryable = InstanceFactory.GetQueryable(this.CurrentConnectionConfig); + this.CreateQueryJoin(joinExpression, types, queryable); + return queryable; + } + public virtual ISugarQueryable Queryable(Expression> joinExpression) + { + InitMppingInfo(); + var types = new Type[] { typeof(T2), typeof(T3), typeof(T4), typeof(T5), typeof(T6), typeof(T7) }; + var queryable = InstanceFactory.GetQueryable(this.CurrentConnectionConfig); + this.CreateQueryJoin(joinExpression, types, queryable); + return queryable; + } + public virtual ISugarQueryable Queryable(Expression> joinExpression) + { + InitMppingInfo(); + var types = new Type[] { typeof(T2), typeof(T3), typeof(T4), typeof(T5), typeof(T6), typeof(T7) }; + var queryable = InstanceFactory.GetQueryable(this.CurrentConnectionConfig); + this.CreateQueryJoin(joinExpression, types, queryable); + return queryable; + } + public virtual ISugarQueryable Queryable(Expression> joinExpression) + { + InitMppingInfo(); + var types = new Type[] { typeof(T2), typeof(T3), typeof(T4), typeof(T5), typeof(T6), typeof(T7), typeof(T8) }; + var queryable = InstanceFactory.GetQueryable(this.CurrentConnectionConfig); + this.CreateQueryJoin(joinExpression, types, queryable); + return queryable; + } + public virtual ISugarQueryable Queryable(Expression> joinExpression) + { + InitMppingInfo(); + var types = new Type[] { typeof(T2), typeof(T3), typeof(T4), typeof(T5), typeof(T6), typeof(T7), typeof(T8) }; + var queryable = InstanceFactory.GetQueryable(this.CurrentConnectionConfig); + this.CreateQueryJoin(joinExpression, types, queryable); + return queryable; + } + #region 9-12 + public virtual ISugarQueryable Queryable(Expression> joinExpression) + { + InitMppingInfo(); + var types = new Type[] { typeof(T2), typeof(T3), typeof(T4), typeof(T5), typeof(T6), typeof(T7), typeof(T8), typeof(T9) }; + var queryable = InstanceFactory.GetQueryable(this.CurrentConnectionConfig); + this.CreateQueryJoin(joinExpression, types, queryable); + return queryable; + } + public virtual ISugarQueryable Queryable(Expression> joinExpression) + { + InitMppingInfo(); + var types = new Type[] { typeof(T2), typeof(T3), typeof(T4), typeof(T5), typeof(T6), typeof(T7), typeof(T8), typeof(T9) }; + var queryable = InstanceFactory.GetQueryable(this.CurrentConnectionConfig); + this.CreateQueryJoin(joinExpression, types, queryable); + return queryable; + } + public virtual ISugarQueryable Queryable(Expression> joinExpression) + { + InitMppingInfo(); + var types = new Type[] { typeof(T2), typeof(T3), typeof(T4), typeof(T5), typeof(T6), typeof(T7), typeof(T8), typeof(T9), typeof(T10) }; + var queryable = InstanceFactory.GetQueryable(this.CurrentConnectionConfig); + this.CreateQueryJoin(joinExpression, types, queryable); + return queryable; + } + public virtual ISugarQueryable Queryable(Expression> joinExpression) + { + InitMppingInfo(); + var types = new Type[] { typeof(T2), typeof(T3), typeof(T4), typeof(T5), typeof(T6), typeof(T7), typeof(T8), typeof(T9), typeof(T10) }; + var queryable = InstanceFactory.GetQueryable(this.CurrentConnectionConfig); + this.CreateQueryJoin(joinExpression, types, queryable); + return queryable; + } + public virtual ISugarQueryable Queryable(Expression> joinExpression) + { + InitMppingInfo(); + 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 queryable = InstanceFactory.GetQueryable(this.CurrentConnectionConfig); + this.CreateQueryJoin(joinExpression, types, queryable); + return queryable; + } + public virtual ISugarQueryable Queryable(Expression> joinExpression) + { + InitMppingInfo(); + 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 queryable = InstanceFactory.GetQueryable(this.CurrentConnectionConfig); + this.CreateQueryJoin(joinExpression, types, queryable); + return queryable; + } + public virtual ISugarQueryable Queryable(Expression> joinExpression) + { + InitMppingInfo(); + var types = new Type[] { typeof(T2), typeof(T3), typeof(T4), typeof(T5), typeof(T6), typeof(T7), typeof(T8), typeof(T9), typeof(T10), typeof(T11), typeof(T12) }; + var queryable = InstanceFactory.GetQueryable(this.CurrentConnectionConfig); + this.CreateQueryJoin(joinExpression, types, queryable); + return queryable; + } + public virtual ISugarQueryable Queryable(Expression> joinExpression) + { + InitMppingInfo(); + var types = new Type[] { typeof(T2), typeof(T3), typeof(T4), typeof(T5), typeof(T6), typeof(T7), typeof(T8), typeof(T9), typeof(T10), typeof(T11), typeof(T12) }; + var queryable = InstanceFactory.GetQueryable(this.CurrentConnectionConfig); + this.CreateQueryJoin(joinExpression, types, queryable); + return queryable; + } + #endregion + public virtual ISugarQueryable Queryable(Expression> joinExpression) where T : class, new() + { + InitMppingInfo(); + var types = new Type[] { typeof(T2) }; + var queryable = InstanceFactory.GetQueryable(this.CurrentConnectionConfig); + this.CreateEasyQueryJoin(joinExpression, types, queryable); + queryable.Where(joinExpression); + return queryable; + } + public virtual ISugarQueryable Queryable(Expression> joinExpression) where T : class, new() + { + InitMppingInfo(); + var types = new Type[] { typeof(T2), typeof(T3) }; + var queryable = InstanceFactory.GetQueryable(this.CurrentConnectionConfig); + this.CreateEasyQueryJoin(joinExpression, types, queryable); + queryable.Where(joinExpression); + return queryable; + } + public virtual ISugarQueryable Queryable(Expression> joinExpression) where T : class, new() + { + InitMppingInfo(); + var types = new Type[] { typeof(T2), typeof(T3), typeof(T4) }; + var queryable = InstanceFactory.GetQueryable(this.CurrentConnectionConfig); + this.CreateEasyQueryJoin(joinExpression, types, queryable); + queryable.Where(joinExpression); + return queryable; + } + public virtual ISugarQueryable Queryable(Expression> joinExpression) where T : class, new() + { + InitMppingInfo(); + var types = new Type[] { typeof(T2), typeof(T3), typeof(T4), typeof(T5) }; + var queryable = InstanceFactory.GetQueryable(this.CurrentConnectionConfig); + this.CreateEasyQueryJoin(joinExpression, types, queryable); + queryable.Where(joinExpression); + return queryable; + } + public virtual ISugarQueryable Queryable(Expression> joinExpression) where T : class, new() + { + InitMppingInfo(); + var types = new Type[] { typeof(T2), typeof(T3), typeof(T4), typeof(T5), typeof(T6) }; + var queryable = InstanceFactory.GetQueryable(this.CurrentConnectionConfig); + this.CreateEasyQueryJoin(joinExpression, types, queryable); + queryable.Where(joinExpression); + return queryable; + } + public virtual ISugarQueryable Queryable(Expression> joinExpression) where T : class, new() + { + InitMppingInfo(); + var types = new Type[] { typeof(T2), typeof(T3), typeof(T4), typeof(T5), typeof(T6), typeof(T7) }; + var queryable = InstanceFactory.GetQueryable(this.CurrentConnectionConfig); + this.CreateEasyQueryJoin(joinExpression, types, queryable); + queryable.Where(joinExpression); + return queryable; + } + public virtual ISugarQueryable Queryable(Expression> joinExpression) where T : class, new() + { + InitMppingInfo(); + var types = new Type[] { typeof(T2), typeof(T3), typeof(T4), typeof(T5), typeof(T6), typeof(T7), typeof(T8) }; + var queryable = InstanceFactory.GetQueryable(this.CurrentConnectionConfig); + this.CreateEasyQueryJoin(joinExpression, types, queryable); + queryable.Where(joinExpression); + return queryable; + } + + #region 9-12 + public virtual ISugarQueryable Queryable(Expression> joinExpression) where T : class, new() + { + InitMppingInfo(); + var types = new Type[] { typeof(T2), typeof(T3), typeof(T4), typeof(T5), typeof(T6), typeof(T7), typeof(T8), typeof(T9) }; + var queryable = InstanceFactory.GetQueryable(this.CurrentConnectionConfig); + this.CreateEasyQueryJoin(joinExpression, types, queryable); + queryable.Where(joinExpression); + return queryable; + } + public virtual ISugarQueryable Queryable(Expression> joinExpression) where T : class, new() + { + InitMppingInfo(); + var types = new Type[] { typeof(T2), typeof(T3), typeof(T4), typeof(T5), typeof(T6), typeof(T7), typeof(T8), typeof(T9), typeof(T10) }; + var queryable = InstanceFactory.GetQueryable(this.CurrentConnectionConfig); + this.CreateEasyQueryJoin(joinExpression, types, queryable); + queryable.Where(joinExpression); + return queryable; + } + public virtual ISugarQueryable Queryable(Expression> joinExpression) where T : class, new() + { + InitMppingInfo(); + 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 queryable = InstanceFactory.GetQueryable(this.CurrentConnectionConfig); + this.CreateEasyQueryJoin(joinExpression, types, queryable); + queryable.Where(joinExpression); + return queryable; + } + public virtual ISugarQueryable Queryable(Expression> joinExpression) where T : class, new() + { + InitMppingInfo(); + var types = new Type[] { typeof(T2), typeof(T3), typeof(T4), typeof(T5), typeof(T6), typeof(T7), typeof(T8), typeof(T9), typeof(T10), typeof(T11), typeof(T12) }; + var queryable = InstanceFactory.GetQueryable(this.CurrentConnectionConfig); + this.CreateEasyQueryJoin(joinExpression, types, queryable); + queryable.Where(joinExpression); + return queryable; + } + public virtual ISugarQueryable Queryable(ISugarQueryable queryable) where T : class, new() + { + var sqlobj = queryable.ToSql(); + return this.SqlQueryable(sqlobj.Key).AddParameters(sqlobj.Value); + } + public virtual ISugarQueryable Queryable( + ISugarQueryable joinQueryable1, ISugarQueryable joinQueryable2, Expression> joinExpression) where T : class, new() where T2 : class, new() + { + return Queryable(joinQueryable1, joinQueryable2, JoinType.Inner, joinExpression); + } + public virtual ISugarQueryable Queryable( + ISugarQueryable joinQueryable1, ISugarQueryable joinQueryable2, JoinType joinType, Expression> joinExpression) where T : class, new() where T2 : 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'"); + + var sqlBuilder = InstanceFactory.GetSqlbuilder(this.Context.CurrentConnectionConfig); + + sqlBuilder.Context = this.Context; + InitMppingInfo(); + var types = new Type[] { typeof(T2) }; + var queryable = InstanceFactory.GetQueryable(this.CurrentConnectionConfig); + queryable.Context = this.Context; + queryable.SqlBuilder = sqlBuilder; + queryable.QueryBuilder = InstanceFactory.GetQueryBuilder(this.CurrentConnectionConfig); + queryable.QueryBuilder.JoinQueryInfos = new List(); + queryable.QueryBuilder.Builder = sqlBuilder; + queryable.QueryBuilder.Context = this.Context; + queryable.QueryBuilder.EntityType = typeof(T); + queryable.QueryBuilder.LambdaExpressions = InstanceFactory.GetLambdaExpressions(this.CurrentConnectionConfig); + + //master + var shortName1 = joinExpression.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 = joinExpression.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(joinExpression, ResolveExpressType.WhereMultiple); + queryable.QueryBuilder.JoinQueryInfos.Add(new JoinQueryInfo() { JoinIndex = 0, JoinType = joinType, JoinWhere = exp.GetResultString(), TableName = sqlBuilder.GetPackTable(sql2, shortName2) }); + + return queryable; + } + #endregion + + public virtual ISugarQueryable UnionAll(params ISugarQueryable[] queryables) where T : class, new() + { + var sqlBuilder = InstanceFactory.GetSqlbuilder(this.Context.CurrentConnectionConfig); + Check.Exception(queryables.IsNullOrEmpty(), "UnionAll.queryables is null "); + int i = 1; + List>> allItems = new List>>(); + foreach (var item in queryables) + { + var sqlObj = item.ToSql(); + string sql = sqlObj.Key; + UtilMethods.RepairReplicationParameters(ref sql, sqlObj.Value.ToArray(), i, "UnionAll"); + if (sqlObj.Value.HasValue()) + allItems.Add(new KeyValuePair>(sql, sqlObj.Value)); + else + allItems.Add(new KeyValuePair>(sql, new List())); + i++; + } + var allSql = sqlBuilder.GetUnionAllSql(allItems.Select(it => it.Key).ToList()); + var allParameters = allItems.SelectMany(it => it.Value).ToArray(); + var resulut = this.Context.Queryable().AS(UtilMethods.GetPackTable(allSql, "unionTable")).With(SqlWith.Null); + resulut.AddParameters(allParameters); + return resulut.Select(sqlBuilder.SqlSelectAll); + } + public virtual ISugarQueryable UnionAll(List> queryables) where T : class, new() + { + Check.Exception(queryables.IsNullOrEmpty(), "UnionAll.queryables is null "); + return UnionAll(queryables.ToArray()); + } + public virtual ISugarQueryable Union(params ISugarQueryable[] queryables) where T : class, new() + { + var sqlBuilder = InstanceFactory.GetSqlbuilder(this.Context.CurrentConnectionConfig); + Check.Exception(queryables.IsNullOrEmpty(), "UnionAll.queryables is null "); + int i = 1; + List>> allItems = new List>>(); + foreach (var item in queryables) + { + var sqlObj = item.ToSql(); + string sql = sqlObj.Key; + UtilMethods.RepairReplicationParameters(ref sql, sqlObj.Value.ToArray(), i, "Union"); + if (sqlObj.Value.HasValue()) + allItems.Add(new KeyValuePair>(sql, sqlObj.Value)); + else + allItems.Add(new KeyValuePair>(sql, new List())); + i++; + } + var allSql = sqlBuilder.GetUnionSql(allItems.Select(it => it.Key).ToList()); + var allParameters = allItems.SelectMany(it => it.Value).ToArray(); + var resulut = this.Context.Queryable().AS(UtilMethods.GetPackTable(allSql, "unionTable")).With(SqlWith.Null); + resulut.AddParameters(allParameters); + return resulut.Select(sqlBuilder.SqlSelectAll); + } + public virtual ISugarQueryable Union(List> queryables) where T : class, new() + { + Check.Exception(queryables.IsNullOrEmpty(), "Union.queryables is null "); + return Union(queryables.ToArray()); + } + #endregion + + #region SqlQueryable + public ISugarQueryable SqlQueryable(string sql) where T : class, new() + { + var sqlBuilder = InstanceFactory.GetSqlbuilder(this.Context.CurrentConnectionConfig); + return this.Context.Queryable().AS(sqlBuilder.GetPackTable(sql, sqlBuilder.GetDefaultShortName())).With(SqlWith.Null).Select(sqlBuilder.GetDefaultShortName() + ".*"); + } + #endregion + + #region Insertable + public virtual IInsertable Insertable(T[] insertObjs) where T : class, new() + { + InitMppingInfo(); + InsertableProvider result = this.CreateInsertable(insertObjs); + return result; + } + public virtual IInsertable Insertable(List insertObjs) where T : class, new() + { + if (insertObjs == null|| insertObjs.IsNullOrEmpty()) + { + insertObjs = new List(); + insertObjs.Add(default(T)); + } + return this.Context.Insertable(insertObjs.ToArray()); + } + public virtual IInsertable Insertable(T insertObj) where T : class, new() + { + return this.Context.Insertable(new T[] { insertObj }); + } + public virtual IInsertable Insertable(Dictionary columnDictionary) where T : class, new() + { + InitMppingInfo(); + Check.Exception(columnDictionary == null || columnDictionary.Count == 0, "Insertable.columnDictionary can't be null"); + var insertObject = this.Context.Utilities.DeserializeObject(this.Context.Utilities.SerializeObject(columnDictionary)); + var columns = columnDictionary.Select(it => it.Key).ToList(); + return this.Context.Insertable(insertObject).InsertColumns(columns.ToArray()); ; + } + public virtual IInsertable Insertable(dynamic insertDynamicObject) where T : class, new() + { + InitMppingInfo(); + if (insertDynamicObject is T) + { + return this.Context.Insertable((T)insertDynamicObject); + } + else + { + var columns = ((object)insertDynamicObject).GetType().GetProperties().Select(it => it.Name).ToList(); + Check.Exception(columns.IsNullOrEmpty(), "Insertable.updateDynamicObject can't be null"); + T insertObject = this.Context.Utilities.DeserializeObject(this.Context.Utilities.SerializeObject(insertDynamicObject)); + return this.Context.Insertable(insertObject).InsertColumns(columns.ToArray()); + } + } + #endregion + + #region Deleteable + public virtual IDeleteable Deleteable() where T : class, new() + { + InitMppingInfo(); + DeleteableProvider result = this.CreateDeleteable(); + return result; + } + public virtual IDeleteable Deleteable(Expression> expression) where T : class, new() + { + InitMppingInfo(); + return this.Context.Deleteable().Where(expression); + } + public virtual IDeleteable Deleteable(dynamic primaryKeyValue) where T : class, new() + { + InitMppingInfo(); + return this.Context.Deleteable().In(primaryKeyValue); + } + public virtual IDeleteable Deleteable(dynamic[] primaryKeyValues) where T : class, new() + { + InitMppingInfo(); + return this.Context.Deleteable().In(primaryKeyValues); + } + public virtual IDeleteable Deleteable(List pkValue) where T : class, new() + { + InitMppingInfo(); + return this.Context.Deleteable().In(pkValue); + } + public virtual IDeleteable Deleteable(T deleteObj) where T : class, new() + { + InitMppingInfo(); + return this.Context.Deleteable().Where(deleteObj); + } + public virtual IDeleteable Deleteable(List deleteObjs) where T : class, new() + { + InitMppingInfo(); + return this.Context.Deleteable().Where(deleteObjs); + } + #endregion + + #region Updateable + public virtual IUpdateable Updateable(T[] UpdateObjs) where T : class, new() + { + InitMppingInfo(); + UpdateableProvider result = this.CreateUpdateable(UpdateObjs); + return result; + } + public virtual IUpdateable Updateable(List UpdateObjs) where T : class, new() + { + Check.ArgumentNullException(UpdateObjs, "Updateable.UpdateObjs can't be null"); + return Updateable(UpdateObjs.ToArray()); + } + public virtual IUpdateable Updateable(T UpdateObj) where T : class, new() + { + return this.Context.Updateable(new T[] { UpdateObj }); + } + public virtual IUpdateable Updateable() where T : class, new() + { + var result = this.Context.Updateable(new T[] { new T() }); + result.UpdateParameterIsNull = true; + return result; + } + public virtual IUpdateable Updateable(Expression> columns) where T : class, new() + { + var result = this.Context.Updateable().SetColumns(columns); + result.UpdateParameterIsNull = true; + return result; + } + public virtual IUpdateable Updateable(Expression> columns) where T : class, new() + { + var result = this.Context.Updateable().SetColumns(columns); + result.UpdateParameterIsNull = true; + return result; + } + + + public virtual IUpdateable Updateable(Dictionary columnDictionary) where T : class, new() + { + InitMppingInfo(); + Check.Exception(columnDictionary == null || columnDictionary.Count == 0, "Updateable.columnDictionary can't be null"); + var updateObject = this.Context.Utilities.DeserializeObject(this.Context.Utilities.SerializeObject(columnDictionary)); + var columns = columnDictionary.Select(it => it.Key).ToList(); + return this.Context.Updateable(updateObject).UpdateColumns(columns.ToArray()); ; + } + public virtual IUpdateable Updateable(dynamic updateDynamicObject) where T : class, new() + { + InitMppingInfo(); + if (updateDynamicObject is T) + { + return this.Context.Updateable((T)updateDynamicObject); + } + else + { + var columns = ((object)updateDynamicObject).GetType().GetProperties().Select(it => it.Name).ToList(); + Check.Exception(columns.IsNullOrEmpty(), "Updateable.updateDynamicObject can't be null"); + T updateObject = this.Context.Utilities.DeserializeObject(this.Context.Utilities.SerializeObject(updateDynamicObject)); + return this.Context.Updateable(updateObject).UpdateColumns(columns.ToArray()); ; + } + } + #endregion + + #region Saveable + public ISaveable Saveable(List saveObjects) where T : class, new() + { + return new SaveableProvider(this, saveObjects); + } + public ISaveable Saveable(T saveObject) where T : class, new() + { + return new SaveableProvider(this, saveObject); + } + #endregion + + #region DbFirst + public virtual IDbFirst DbFirst + { + get + { + IDbFirst dbFirst = InstanceFactory.GetDbFirst(this.Context.CurrentConnectionConfig); + dbFirst.Context = this.Context; + dbFirst.Init(); + return dbFirst; + } + } + #endregion + + #region CodeFirst + public virtual ICodeFirst CodeFirst + { + get + { + ICodeFirst codeFirst = InstanceFactory.GetCodeFirst(this.Context.CurrentConnectionConfig); + codeFirst.Context = this.Context; + return codeFirst; + } + } + #endregion + + #region Db Maintenance + public virtual IDbMaintenance DbMaintenance + { + get + { + if (this.Context._DbMaintenance == null) + { + IDbMaintenance maintenance = InstanceFactory.GetDbMaintenance(this.Context.CurrentConnectionConfig); + this.Context._DbMaintenance = maintenance; + maintenance.Context = this.Context; + } + return this.Context._DbMaintenance; + } + } + #endregion + + #region Entity Maintenance + [Obsolete("Use SqlSugarClient.EntityMaintenance")] + public virtual EntityMaintenance EntityProvider + { + get { return this.Context.EntityMaintenance; } + set { this.Context.EntityMaintenance = value; } + } + public virtual EntityMaintenance EntityMaintenance + { + get + { + if (this.Context._EntityProvider == null) + { + this.Context._EntityProvider = new EntityMaintenance(); + this.Context._EntityProvider.Context = this.Context; + } + return this.Context._EntityProvider; + } + set { this.Context._EntityProvider = value; } + } + #endregion + + #region Gobal Filter + public virtual QueryFilterProvider QueryFilter + { + get + { + if (this.Context._QueryFilterProvider == null) + { + this.Context._QueryFilterProvider = new QueryFilterProvider(); + this.Context._QueryFilterProvider.Context = this.Context; + } + return this.Context._QueryFilterProvider; + } + set { this.Context._QueryFilterProvider = value; } + } + #endregion + + #region SimpleClient + [Obsolete("Use SqlSugarClient.GetSimpleClient() Or SqlSugarClient.GetSimpleClient() ")] + public virtual SimpleClient SimpleClient + { + get + { + if (this.Context._SimpleClient == null) + this.Context._SimpleClient = new SimpleClient(this.Context); + return this.Context._SimpleClient; + } + } + public virtual SimpleClient GetSimpleClient() where T : class, new() + { + return new SimpleClient(this.Context); + } + public virtual SimpleClient GetSimpleClient() + { + if (this.Context._SimpleClient == null) + this.Context._SimpleClient = new SimpleClient(this.Context); + return this.Context._SimpleClient; + } + #endregion + + #region Dispose OR Close + public virtual void Close() + { + if (this.Context.Ado != null) + this.Context.Ado.Close(); + } + public virtual void Open() + { + if (this.Context.Ado != null) + this.Context.Ado.Open(); + } + public virtual void Dispose() + { + if (this.Context.Ado != null) + this.Context.Ado.Dispose(); + } + #endregion + + #region Queue + public int SaveQueues(bool isTran = true) + { + return SaveQueuesProvider(isTran, (sql, parameters) => { return this.Ado.ExecuteCommand(sql, parameters); }); + } + + public Task SaveQueuesAsync(bool isTran = true) + { + var result = new Task(() => { return SaveQueues(isTran); }); + result.Start(); + return result; + } + public List SaveQueues(bool isTran = true) + { + return SaveQueuesProvider(isTran, (sql, parameters) => { return this.Ado.SqlQuery(sql, parameters); }); + } + public Task> SaveQueuesAsync(bool isTran = true) + { + var result = new Task>(() => { return SaveQueues(); }); + result.Start(); + return result; + } + public Tuple, List> SaveQueues(bool isTran = true) + { + return SaveQueuesProvider(isTran, (sql, parameters) => { return this.Ado.SqlQuery(sql, parameters); }); + } + public Task, List>> SaveQueuesAsync(bool isTran = true) + { + var result = new Task, List>>(() => { return SaveQueues(isTran); }); + result.Start(); + return result; + } + public Tuple, List, List> SaveQueues(bool isTran = true) + { + return SaveQueuesProvider(isTran, (sql, parameters) => { return this.Ado.SqlQuery(sql, parameters); }); + } + public Task, List, List>> SaveQueuesAsync(bool isTran = true) + { + var result = new Task, List, List>>(() => { return SaveQueues(isTran); }); + result.Start(); + return result; + } + public Tuple, List, List, List> SaveQueues(bool isTran = true) + { + return SaveQueuesProvider(isTran, (sql, parameters) => { return this.Ado.SqlQuery(sql, parameters); }); + } + public Task, List, List, List>> SaveQueuesAsync(bool isTran = true) + { + var result = new Task, List, List, List>>(() => { return SaveQueues(isTran); }); + result.Start(); + return result; + } + public Tuple, List, List, List, List> SaveQueues(bool isTran = true) + { + return SaveQueuesProvider(isTran, (sql, parameters) => { return this.Ado.SqlQuery(sql, parameters); }); + } + public Task, List, List, List, List>> SaveQueuesAsync(bool isTran = true) + { + var result = new Task, List, List, List, List>>(() => { return SaveQueues(isTran); }); + result.Start(); + return result; + } + public Tuple, List, List, List, List, List> SaveQueues(bool isTran = true) + { + return SaveQueuesProvider(isTran, (sql, parameters) => { return this.Ado.SqlQuery(sql, parameters); }); + } + public Task, List, List, List, List, List>> SaveQueuesAsync(bool isTran = true) + { + var result = new Task, List, List, List, List, List>>(() => { return SaveQueues(isTran); }); + result.Start(); + return result; + } + public Tuple, List, List, List, List, List, List> SaveQueues(bool isTran = true) + { + return SaveQueuesProvider(isTran, (sql, parameters) => { return this.Ado.SqlQuery(sql, parameters); }); + } + public Task, List, List, List, List, List, List>> SaveQueuesAsync(bool isTran = true) + { + var result = new Task, List, List, List, List, List, List>>(() => { return SaveQueues(isTran); }); + result.Start(); + return result; + } + public void AddQueue(string sql, object parsmeters=null) + { + if (Queues == null) + { + Queues = new QueueList(); + } + this.Queues.Add(sql,this.Context.Ado.GetParameters(parsmeters)); + } + public void AddQueue(string sql, SugarParameter parsmeter) + { + if (Queues == null) + { + Queues = new QueueList(); + } + this.Queues.Add(sql, new List() { parsmeter }); + } + public void AddQueue(string sql, List parsmeters) + { + if (Queues == null) + { + Queues = new QueueList(); + } + this.Queues.Add(sql, parsmeters); + } + public QueueList Queues = new QueueList(); + + private T SaveQueuesProvider(bool isTran, Func, T> func) + { + try + { + if (this.CurrentConnectionConfig.DbType == DbType.Oracle) { + throw new Exception("Oracle no support SaveQueues"); + } + if (this.Queues == null || this.Queues.Count == 0) return default(T); + isTran = isTran && this.Ado.Transaction == null; + if (isTran) this.Ado.BeginTran(); + StringBuilder sqlBuilder = new StringBuilder(); + var parsmeters = new List(); + var index = 1; + if (this.Queues.HasValue()) + { + foreach (var item in Queues) + { + if (item.Sql == null) + item.Sql = string.Empty; + if (item.Parameters == null) + item.Parameters = new SugarParameter[] { }; + var itemParsmeters = item.Parameters.OrderByDescending(it => it.ParameterName.Length).ToList(); + List addParameters = new List(); + var itemSql = item.Sql; + foreach (var itemParameter in itemParsmeters) + { + var newName = itemParameter.ParameterName + "_q_" + index; + SugarParameter parameter = new SugarParameter(newName, itemParameter.Value); + parameter.DbType = itemParameter.DbType; + itemSql = UtilMethods.ReplaceSqlParameter(itemSql, itemParameter, newName); + addParameters.Add(parameter); + } + parsmeters.AddRange(addParameters); + itemSql = itemSql.TrimEnd(';')+";"; + sqlBuilder.AppendLine(itemSql); + index++; + } + } + this.Queues.Clear(); + var result = func(sqlBuilder.ToString(), parsmeters); + if (isTran) this.Ado.CommitTran(); + return result; + } + catch (Exception ex) + { + if (isTran) this.Ado.RollbackTran(); + throw ex; + } + } + + #endregion + } +} diff --git a/Src/Asp.Net/SqlSugar/Utilities/CallContext.cs b/Src/Asp.Net/SqlSugar/Utilities/CallContext.cs index 5e9cd3280..bdfb3bccb 100644 --- a/Src/Asp.Net/SqlSugar/Utilities/CallContext.cs +++ b/Src/Asp.Net/SqlSugar/Utilities/CallContext.cs @@ -10,6 +10,6 @@ namespace SqlSugar { internal class CallContext { - public static ThreadLocal> ContextList = new ThreadLocal>(); + public static ThreadLocal> ContextList = new ThreadLocal>(); } } diff --git a/Src/Asp.Net/SqlSugar/Utilities/UtilConstants.cs b/Src/Asp.Net/SqlSugar/Utilities/UtilConstants.cs index f0a7f6a61..02342d66a 100644 --- a/Src/Asp.Net/SqlSugar/Utilities/UtilConstants.cs +++ b/Src/Asp.Net/SqlSugar/Utilities/UtilConstants.cs @@ -42,6 +42,6 @@ namespace SqlSugar internal static Type DicArraySS = typeof(Dictionary); internal static Type DicArraySO = typeof(Dictionary); - public static Type SugarType = typeof(SqlSugarClient); + public static Type SugarType = typeof(SqlSugarContext); } } diff --git a/Src/Asp.Net/SqlSugar/Utilities/UtilExceptions.cs b/Src/Asp.Net/SqlSugar/Utilities/UtilExceptions.cs index 0632b5411..811329387 100644 --- a/Src/Asp.Net/SqlSugar/Utilities/UtilExceptions.cs +++ b/Src/Asp.Net/SqlSugar/Utilities/UtilExceptions.cs @@ -18,18 +18,18 @@ namespace SqlSugar public SqlSugarException(string message) : base(message){} - public SqlSugarException(SqlSugarClient context,string message, string sql) + public SqlSugarException(SqlSugarContext context,string message, string sql) : base(message) { this.Sql = sql; } - public SqlSugarException(SqlSugarClient context, string message, string sql, object pars) + public SqlSugarException(SqlSugarContext context, string message, string sql, object pars) : base(message) { this.Sql = sql; this.Parametres = pars; } - public SqlSugarException(SqlSugarClient context, Exception ex, string sql, object pars) + public SqlSugarException(SqlSugarContext context, Exception ex, string sql, object pars) : base(ex.Message) { this.Sql = sql; @@ -40,7 +40,7 @@ namespace SqlSugar this.Source = ex.Source; } - public SqlSugarException(SqlSugarClient context, string message, object pars) + public SqlSugarException(SqlSugarContext context, string message, object pars) : base(message) { this.Parametres = pars; }