diff --git a/Src/Asp.NetCore2/SqlSeverTest/MySqlTest/Demos/1_Query.cs b/Src/Asp.NetCore2/SqlSeverTest/MySqlTest/Demos/1_Query.cs index 80a06df73..2a241fbef 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/MySqlTest/Demos/1_Query.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/MySqlTest/Demos/1_Query.cs @@ -159,7 +159,7 @@ namespace OrmTest.Demo var getNew = db.Queryable().Where(it => it.Id == 1).Select(it => new { id = SqlFunc.IIF(it.Id == 0, 1, it.Id), it.Name, it.SchoolId }).ToList(); var getAllNoLock = db.Queryable().With(SqlWith.NoLock).ToList(); var getByPrimaryKey = db.Queryable().InSingle(2); - var getSingleOrDefault = db.Queryable().Single(); + var getSingleOrDefault = db.Queryable().Where(it => it.Id == 1).Single(); var getFirstOrDefault = db.Queryable().First(); var getByWhere = db.Queryable().Where(it => it.Id == 1 || it.Name == "a").ToList(); var getByFuns = db.Queryable().Where(it => SqlFunc.IsNullOrEmpty(it.Name)).ToList(); diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSeverTest/Demos/1_Query.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSeverTest/Demos/1_Query.cs index b41c72ec3..230bc5649 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSeverTest/Demos/1_Query.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSeverTest/Demos/1_Query.cs @@ -160,7 +160,7 @@ namespace OrmTest.Demo var getNew = db.Queryable().Where(it => it.Id == 1).Select(it => new { id = SqlFunc.IIF(it.Id == 0, 1, it.Id), it.Name, it.SchoolId }).ToList(); var getAllNoLock = db.Queryable().With(SqlWith.NoLock).ToList(); var getByPrimaryKey = db.Queryable().InSingle(2); - var getSingleOrDefault = db.Queryable().Single(); + var getSingleOrDefault = db.Queryable().Where(it=>it.Id==1).Single(); var getFirstOrDefault = db.Queryable().First(); var getByWhere = db.Queryable().Where(it => it.Id == 1 || it.Name == "a").ToList(); var getByFuns = db.Queryable().Where(it => SqlFunc.IsNullOrEmpty(it.Name)).ToList(); diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/DeleteProvider/DeleteableProvider.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/DeleteProvider/DeleteableProvider.cs index d997196b1..aa0c2183f 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/DeleteProvider/DeleteableProvider.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/DeleteProvider/DeleteableProvider.cs @@ -30,6 +30,15 @@ namespace SqlSugar RestoreMapping(); return Db.ExecuteCommand(sql, paramters); } + public Task ExecuteCommandAsync() + { + Task result = new Task(() => + { + IDeleteable asyncDeleteable = CopyDeleteable(); + return asyncDeleteable.ExecuteCommand(); + }); + return result; + } public IDeleteable AS(string tableName) { var entityName = typeof(T).Name; @@ -206,7 +215,6 @@ namespace SqlSugar return new KeyValuePair>(sql, paramters); } - private List GetPrimaryKeys() { if (this.Context.IsSystemTablesConfig) @@ -218,6 +226,7 @@ namespace SqlSugar return this.EntityInfo.Columns.Where(it => it.IsPrimarykey).Select(it => it.DbColumnName).ToList(); } } + private List GetIdentityKeys() { if (this.Context.IsSystemTablesConfig) @@ -229,6 +238,7 @@ namespace SqlSugar return this.EntityInfo.Columns.Where(it => it.IsIdentity).Select(it => it.DbColumnName).ToList(); } } + private void RestoreMapping() { if (IsAs) @@ -236,5 +246,24 @@ namespace SqlSugar this.Context.MappingTables = OldMappingTableList; } } + + private IDeleteable CopyDeleteable() { + var asyncContext = this.Context.CopyContext(this.Context.RewritableMethods.TranslateCopy(this.Context.CurrentConnectionConfig)); + asyncContext.CurrentConnectionConfig.IsAutoCloseConnection = true; + asyncContext.Ado.IsEnableLogEvent = this.Context.Ado.IsEnableLogEvent; + asyncContext.Ado.LogEventStarting = this.Context.Ado.LogEventStarting; + asyncContext.Ado.LogEventCompleted = this.Context.Ado.LogEventCompleted; + asyncContext.Ado.ProcessingEventStartingSQL = this.Context.Ado.ProcessingEventStartingSQL; + + var asyncDeleteable = asyncContext.Deleteable(); + var asyncDeleteBuilder = asyncDeleteable.DeleteBuilder; + asyncDeleteBuilder.BigDataFiled = this.DeleteBuilder.BigDataFiled; + asyncDeleteBuilder.BigDataInValues = this.DeleteBuilder.BigDataInValues; + asyncDeleteBuilder.Parameters = this.DeleteBuilder.Parameters; + asyncDeleteBuilder.sql = this.DeleteBuilder.sql; + asyncDeleteBuilder.WhereInfos = this.DeleteBuilder.WhereInfos; + asyncDeleteBuilder.TableWithString = this.DeleteBuilder.TableWithString; + return asyncDeleteable; + } } } diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/InsertableProvider/InsertableProvider.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/InsertableProvider/InsertableProvider.cs index c86a9ee1e..5aa0b0554 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/InsertableProvider/InsertableProvider.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/InsertableProvider/InsertableProvider.cs @@ -82,6 +82,51 @@ namespace SqlSugar this.Context.EntityProvider.GetProperty(identityKey).SetValue(result,setValue, null); return idValue>0; } + public Task ExecuteCommandAsync() + { + Task result = new Task(() => + { + IInsertable asyncInsertable = CopyInsertable(); + return asyncInsertable.ExecuteCommand(); + }); + return result; + } + public Task ExecuteReturnIdentityAsync() + { + Task result = new Task(() => + { + IInsertable asyncInsertable = CopyInsertable(); + return asyncInsertable.ExecuteReturnIdentity(); + }); + return result; + } + public Task ExecuteReturnEntityAsync() + { + Task result = new Task(() => + { + IInsertable asyncInsertable = CopyInsertable(); + return asyncInsertable.ExecuteReturnEntity(); + }); + return result; + } + public Task ExecuteCommandIdentityIntoEntityAsync() + { + Task result = new Task(() => + { + IInsertable asyncInsertable = CopyInsertable(); + return asyncInsertable.ExecuteCommandIdentityIntoEntity(); + }); + return result; + } + public Task ExecuteReturnBigIdentityAsync() + { + Task result = new Task(() => + { + IInsertable asyncInsertable = CopyInsertable(); + return asyncInsertable.ExecuteReturnBigIdentity(); + }); + return result; + } #endregion #region Setting @@ -255,6 +300,27 @@ namespace SqlSugar this.Context.MappingTables = OldMappingTableList; } } + private IInsertable CopyInsertable() + { + var asyncContext = this.Context.CopyContext(this.Context.RewritableMethods.TranslateCopy(this.Context.CurrentConnectionConfig)); + asyncContext.CurrentConnectionConfig.IsAutoCloseConnection = true; + asyncContext.Ado.IsEnableLogEvent = this.Context.Ado.IsEnableLogEvent; + asyncContext.Ado.LogEventStarting = this.Context.Ado.LogEventStarting; + asyncContext.Ado.LogEventCompleted = this.Context.Ado.LogEventCompleted; + asyncContext.Ado.ProcessingEventStartingSQL = this.Context.Ado.ProcessingEventStartingSQL; + + var asyncInsertable = asyncContext.Insertable(this.InsertObjs); + var asyncInsertableBuilder = asyncInsertable.InsertBuilder; + asyncInsertableBuilder.DbColumnInfoList = this.InsertBuilder.DbColumnInfoList; + asyncInsertableBuilder.EntityInfo = this.InsertBuilder.EntityInfo; + asyncInsertableBuilder.Parameters = this.InsertBuilder.Parameters; + asyncInsertableBuilder.sql = this.InsertBuilder.sql; + asyncInsertableBuilder.IsNoInsertNull = this.InsertBuilder.IsNoInsertNull; + asyncInsertableBuilder.IsReturnIdentity = this.InsertBuilder.IsReturnIdentity; + asyncInsertableBuilder.EntityInfo = this.InsertBuilder.EntityInfo; + asyncInsertableBuilder.TableWithString = this.InsertBuilder.TableWithString; + return asyncInsertable; + } #endregion } } diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs index dd6ed862d..a53215f8d 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs @@ -9,6 +9,7 @@ using System.Text; using System.Text.RegularExpressions; using System.Reflection; using System.Dynamic; +using System.Threading.Tasks; namespace SqlSugar { @@ -28,6 +29,9 @@ namespace SqlSugar { return this.SqlBuilder.QueryBuilder; } + set { + this.SqlBuilder.QueryBuilder = value; + } } public EntityInfo EntityInfo { @@ -332,16 +336,28 @@ namespace SqlSugar { QueryBuilder.OrderByValue = QueryBuilder.DefaultOrderByTemplate; } - QueryBuilder.Skip = 0; - QueryBuilder.Take = 1; + var oldSkip = QueryBuilder.Skip; + var oldTake = QueryBuilder.Take; + var oldOrderBy = QueryBuilder.OrderByValue; + QueryBuilder.Skip = null; + QueryBuilder.Take = null; + QueryBuilder.OrderByValue = null; var reval = this.ToList(); - if (reval.IsValuable()) + QueryBuilder.Skip = oldSkip; + QueryBuilder.Take = oldTake; + QueryBuilder.OrderByValue = oldOrderBy; + if (reval == null || reval.Count == 0) { - return reval.SingleOrDefault(); + return default(T); + } + else if (reval.Count == 2) + { + Check.Exception(true, ".Single() result must not exceed one . You can use.First()"); + return default(T); } else { - return default(T); + return reval.SingleOrDefault(); } } public virtual T Single(Expression> expression) @@ -377,7 +393,7 @@ namespace SqlSugar public virtual bool Any(Expression> expression) { _Where(expression); - var result= Any(); + var result = Any(); this.QueryBuilder.WhereInfos.Remove(this.QueryBuilder.WhereInfos.Last()); return result; } @@ -408,7 +424,7 @@ namespace SqlSugar Check.Exception(this.QueryBuilder.SelectValue.IsNullOrEmpty(), "MergeTable need to use Select(it=>new{}) Method ."); Check.Exception(this.QueryBuilder.Skip > 0 || this.QueryBuilder.Take > 0, "MergeTable Queryable cannot Take Skip OrderBy PageToList "); var sql = QueryBuilder.ToSqlString(); - var tableName =this.SqlBuilder.GetPackTable (sql, "MergeTable"); + var tableName = this.SqlBuilder.GetPackTable(sql, "MergeTable"); return this.Context.Queryable().AS(tableName).Select("*"); } @@ -556,6 +572,253 @@ namespace SqlSugar return new KeyValuePair>(sql, QueryBuilder.Parameters); } + #region Async methods + public Task SingleAsync() + { + Task result = new Task(() => + { + ISugarQueryable asyncQueryable = CopyQueryable(); + return asyncQueryable.Single(); + }); + return result; + } + + public Task SingleAsync(Expression> expression) + { + Task result = new Task(() => + { + ISugarQueryable asyncQueryable = CopyQueryable(); + return asyncQueryable.Single(expression); + }); + return result; + } + + public Task FirstAsync() + { + Task result = new Task(() => + { + ISugarQueryable asyncQueryable = CopyQueryable(); + return asyncQueryable.First(); + }); + return result; + } + + public Task FirstAsync(Expression> expression) + { + Task result = new Task(() => + { + ISugarQueryable asyncQueryable = CopyQueryable(); + return asyncQueryable.First(expression); + }); + return result; + } + + public Task AnyAsync(Expression> expression) + { + Task result = new Task(() => + { + ISugarQueryable asyncQueryable = CopyQueryable(); + return asyncQueryable.Any(expression); + }); + return result; + } + + public Task AnyAsync() + { + Task result = new Task(() => + { + ISugarQueryable asyncQueryable = CopyQueryable(); + return asyncQueryable.Any(); + }); + return result; + } + + public Task CountAsync() + { + Task result = new Task(() => + { + ISugarQueryable asyncQueryable = CopyQueryable(); + return asyncQueryable.Count(); + }); + return result; + } + + public Task MaxAsync(string maxField) + { + Task result = new Task(() => + { + ISugarQueryable asyncQueryable = CopyQueryable(); + return asyncQueryable.Max(maxField); + }); + return result; + } + + public Task MaxAsync(Expression> expression) + { + Task result = new Task(() => + { + ISugarQueryable asyncQueryable = CopyQueryable(); + return asyncQueryable.Max(expression); + }); + return result; + } + + public Task MinAsync(string minField) + { + Task result = new Task(() => + { + ISugarQueryable asyncQueryable = CopyQueryable(); + return asyncQueryable.Min(minField); + }); + return result; + } + + public Task MinAsync(Expression> expression) + { + Task result = new Task(() => + { + ISugarQueryable asyncQueryable = CopyQueryable(); + return asyncQueryable.Min(expression); + }); + return result; + } + + public Task SumAsync(string sumField) + { + Task result = new Task(() => + { + ISugarQueryable asyncQueryable = CopyQueryable(); + return asyncQueryable.Sum(sumField); + }); + return result; + } + + public Task SumAsync(Expression> expression) + { + Task result = new Task(() => + { + ISugarQueryable asyncQueryable = CopyQueryable(); + return asyncQueryable.Sum(expression); + }); + return result; + } + + public Task AvgAsync(string avgField) + { + Task result = new Task(() => + { + ISugarQueryable asyncQueryable = CopyQueryable(); + return asyncQueryable.Avg(avgField); + }); + return result; + } + + public Task AvgAsync(Expression> expression) + { + Task result = new Task(() => + { + ISugarQueryable asyncQueryable = CopyQueryable(); + return asyncQueryable.Avg(expression); + }); + return result; + } + + public Task> ToListAsync() + { + Task> result = new Task>(() => + { + ISugarQueryable asyncQueryable = CopyQueryable(); + return asyncQueryable.ToList(); + }); + return result; + } + + public Task ToJsonAsync() + { + Task result = new Task(() => + { + ISugarQueryable asyncQueryable = CopyQueryable(); + return asyncQueryable.ToJson(); + }); + return result; + } + + public Task ToJsonPageAsync(int pageIndex, int pageSize) + { + Task result = new Task(() => + { + ISugarQueryable asyncQueryable = CopyQueryable(); + return asyncQueryable.ToJsonPage(pageIndex,pageSize); + }); + return result; + } + + public Task> ToJsonPageAsync(int pageIndex, int pageSize, int totalNumber) + { + Task> result = new Task>(() => + { + int totalNumberAsync = 0; + ISugarQueryable asyncQueryable = CopyQueryable(); + var list= asyncQueryable.ToJsonPage(pageIndex, pageSize,ref totalNumberAsync); + return new KeyValuePair(list, totalNumberAsync); + }); + return result; + } + + public Task ToDataTableAsync() + { + Task result = new Task(() => + { + ISugarQueryable asyncQueryable = CopyQueryable(); + return asyncQueryable.ToDataTable(); + }); + return result; + } + + public Task ToDataTablePageAsync(int pageIndex, int pageSize) + { + Task result = new Task(() => + { + ISugarQueryable asyncQueryable = CopyQueryable(); + return asyncQueryable.ToDataTablePage(pageIndex, pageSize); + }); + return result; + } + + public Task> ToDataTablePageAsync(int pageIndex, int pageSize,int totalNumber) + { + Task> result = new Task>(() => + { + int totalNumberAsync = 0; + ISugarQueryable asyncQueryable = CopyQueryable(); + var list = asyncQueryable.ToDataTablePage(pageIndex, pageSize, ref totalNumberAsync); + return new KeyValuePair(list, totalNumberAsync); + }); + return result; + } + + public Task> ToPageListAsync(int pageIndex, int pageSize) + { + Task> result = new Task>(() => + { + ISugarQueryable asyncQueryable = CopyQueryable(); + return asyncQueryable.ToPageList(pageIndex, pageSize); + }); + return result; + } + + public Task, int>> ToPageListAsync(int pageIndex, int pageSize, int totalNumber) + { + Task, int>> result = new Task, int>>(() => + { + int totalNumberAsync = 0; + ISugarQueryable asyncQueryable = CopyQueryable(); + var list = asyncQueryable.ToPageList(pageIndex, pageSize, ref totalNumberAsync); + return new KeyValuePair, int>(list, totalNumberAsync); + }); + return result; + } + #endregion #region Private Methods protected ISugarQueryable _Select(Expression expression) @@ -661,7 +924,7 @@ namespace SqlSugar { if (typeof(TResult) == typeof(ExpandoObject)) { - return this.Context.RewritableMethods.DataReaderToExpandoObjectList(dataReader) as List; + return this.Context.RewritableMethods.DataReaderToExpandoObjectList(dataReader) as List; } if (entityType.IsAnonymousType() || isComplexModel) { @@ -681,7 +944,7 @@ namespace SqlSugar string sql = sqlObj.Key; if (sqlObj.Value.IsValuable()) { - this.SqlBuilder.RepairReplicationParameters(ref sql,sqlObj.Value.ToArray(),100); + this.SqlBuilder.RepairReplicationParameters(ref sql, sqlObj.Value.ToArray(), 100); this.QueryBuilder.Parameters.AddRange(sqlObj.Value); } var isSingle = QueryBuilder.IsSingle(); @@ -739,15 +1002,37 @@ namespace SqlSugar var contextProperty = item.GetType().GetProperty("Context"); ConnectionConfig config = new ConnectionConfig(); config = this.Context.CurrentConnectionConfig; - var newClient = new SqlSugarClient(config); - newClient.MappingColumns = this.Context.MappingColumns; - newClient.MappingTables = this.Context.MappingTables; - newClient.IgnoreColumns = this.Context.IgnoreColumns; + SqlSugarClient newClient = this.Context.CopyContext(config); contextProperty.SetValue(item, newClient, null); } } } } + private ISugarQueryable CopyQueryable() + { + var asyncContext = this.Context.CopyContext(this.Context.RewritableMethods.TranslateCopy(this.Context.CurrentConnectionConfig)); + asyncContext.CurrentConnectionConfig.IsAutoCloseConnection = true; + asyncContext.Ado.IsEnableLogEvent = this.Context.Ado.IsEnableLogEvent; + asyncContext.Ado.LogEventStarting = this.Context.Ado.LogEventStarting; + asyncContext.Ado.LogEventCompleted = this.Context.Ado.LogEventCompleted; + asyncContext.Ado.ProcessingEventStartingSQL = this.Context.Ado.ProcessingEventStartingSQL; + + var asyncQueryable = asyncContext.Queryable().Select(string.Empty); + var asyncQueryableBuilder = asyncQueryable.QueryBuilder; + asyncQueryableBuilder.Take = this.QueryBuilder.Take; + asyncQueryableBuilder.Skip = this.QueryBuilder.Skip; + asyncQueryableBuilder.SelectValue = this.QueryBuilder.SelectValue; + asyncQueryableBuilder.WhereInfos = this.QueryBuilder.WhereInfos; + asyncQueryableBuilder.EasyJoinInfos = this.QueryBuilder.EasyJoinInfos; + asyncQueryableBuilder.JoinQueryInfos = this.QueryBuilder.JoinQueryInfos; + asyncQueryableBuilder.WhereIndex = this.QueryBuilder.WhereIndex; + asyncQueryableBuilder.EntityType = this.QueryBuilder.EntityType; + asyncQueryableBuilder.EntityName = this.QueryBuilder.EntityName; + asyncQueryableBuilder.Parameters = this.QueryBuilder.Parameters; + asyncQueryableBuilder.TableShortName = this.QueryBuilder.TableShortName; + asyncQueryableBuilder.TableWithString = this.QueryBuilder.TableWithString; + return asyncQueryable; + } #endregion } #endregion @@ -2152,7 +2437,7 @@ namespace SqlSugar } #endregion #region T9 - public partial class QueryableProvider : QueryableProvider, ISugarQueryable + public partial class QueryableProvider : QueryableProvider, ISugarQueryable { #region Where public new ISugarQueryable Where(Expression> expression) @@ -2195,7 +2480,7 @@ namespace SqlSugar _Where(expression); return this; } - public ISugarQueryable Where(Expression> expression) + public ISugarQueryable Where(Expression> expression) { _Where(expression); return this; @@ -2255,7 +2540,7 @@ namespace SqlSugar _Where(expression); return this; } - public ISugarQueryable WhereIF(bool isWhere, Expression> expression) + public ISugarQueryable WhereIF(bool isWhere, Expression> expression) { if (isWhere) _Where(expression); @@ -2305,14 +2590,14 @@ namespace SqlSugar { return _Select(expression); } - public ISugarQueryable Select(Expression> expression) + public ISugarQueryable Select(Expression> expression) { return _Select(expression); } #endregion #region OrderBy - public new ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc) + public new ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc) { _OrderBy(expression, type); return this; @@ -2352,7 +2637,7 @@ namespace SqlSugar _OrderBy(expression, type); return this; } - public ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc) + public ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc) { _OrderBy(expression, type); return this; @@ -2400,7 +2685,7 @@ namespace SqlSugar _GroupBy(expression); return this; } - public ISugarQueryable GroupBy(Expression> expression) + public ISugarQueryable GroupBy(Expression> expression) { _GroupBy(expression); return this; @@ -2453,7 +2738,7 @@ namespace SqlSugar } #endregion #region T10 - public partial class QueryableProvider : QueryableProvider, ISugarQueryable + public partial class QueryableProvider : QueryableProvider, ISugarQueryable { #region Where public new ISugarQueryable Where(Expression> expression) @@ -2501,7 +2786,7 @@ namespace SqlSugar _Where(expression); return this; } - public ISugarQueryable Where(Expression> expression) + public ISugarQueryable Where(Expression> expression) { _Where(expression); return this; @@ -2567,7 +2852,7 @@ namespace SqlSugar _Where(expression); return this; } - public ISugarQueryable WhereIF(bool isWhere, Expression> expression) + public ISugarQueryable WhereIF(bool isWhere, Expression> expression) { if (isWhere) _Where(expression); @@ -2620,7 +2905,7 @@ namespace SqlSugar { return _Select(expression); } - public ISugarQueryable Select(Expression> expression) + public ISugarQueryable Select(Expression> expression) { return _Select(expression); } @@ -2672,7 +2957,7 @@ namespace SqlSugar _OrderBy(expression, type); return this; } - public ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc) + public ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc) { _OrderBy(expression, type); return this; @@ -2680,7 +2965,7 @@ namespace SqlSugar #endregion #region GroupBy - public new ISugarQueryable GroupBy(Expression> expression) + public new ISugarQueryable GroupBy(Expression> expression) { _GroupBy(expression); return this; @@ -2725,7 +3010,7 @@ namespace SqlSugar _GroupBy(expression); return this; } - public ISugarQueryable GroupBy(Expression> expression) + public ISugarQueryable GroupBy(Expression> expression) { _GroupBy(expression); return this; @@ -2778,7 +3063,7 @@ namespace SqlSugar } #endregion #region T11 - public partial class QueryableProvider : QueryableProvider, ISugarQueryable + public partial class QueryableProvider : QueryableProvider, ISugarQueryable { #region Where public new ISugarQueryable Where(Expression> expression) @@ -2831,7 +3116,7 @@ namespace SqlSugar _Where(expression); return this; } - public ISugarQueryable Where(Expression> expression) + public ISugarQueryable Where(Expression> expression) { _Where(expression); return this; @@ -2903,7 +3188,7 @@ namespace SqlSugar _Where(expression); return this; } - public ISugarQueryable WhereIF(bool isWhere, Expression> expression) + public ISugarQueryable WhereIF(bool isWhere, Expression> expression) { if (isWhere) _Where(expression); @@ -2960,7 +3245,7 @@ namespace SqlSugar { return _Select(expression); } - public ISugarQueryable Select(Expression> expression) + public ISugarQueryable Select(Expression> expression) { return _Select(expression); } @@ -3017,7 +3302,7 @@ namespace SqlSugar _OrderBy(expression, type); return this; } - public ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc) + public ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc) { _OrderBy(expression, type); return this; @@ -3075,7 +3360,7 @@ namespace SqlSugar _GroupBy(expression); return this; } - public ISugarQueryable GroupBy(Expression> expression) + public ISugarQueryable GroupBy(Expression> expression) { _GroupBy(expression); return this; @@ -3128,7 +3413,7 @@ namespace SqlSugar } #endregion #region T12 - public partial class QueryableProvider : QueryableProvider, ISugarQueryable + public partial class QueryableProvider : QueryableProvider, ISugarQueryable { #region Where public new ISugarQueryable Where(Expression> expression) @@ -3186,7 +3471,7 @@ namespace SqlSugar _Where(expression); return this; } - public ISugarQueryable Where(Expression> expression) + public ISugarQueryable Where(Expression> expression) { _Where(expression); return this; @@ -3264,7 +3549,7 @@ namespace SqlSugar _Where(expression); return this; } - public ISugarQueryable WhereIF(bool isWhere, Expression> expression) + public ISugarQueryable WhereIF(bool isWhere, Expression> expression) { if (isWhere) _Where(expression); @@ -3325,7 +3610,7 @@ namespace SqlSugar { return _Select(expression); } - public ISugarQueryable Select(Expression> expression) + public ISugarQueryable Select(Expression> expression) { return _Select(expression); } @@ -3387,7 +3672,7 @@ namespace SqlSugar _OrderBy(expression, type); return this; } - public ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc) + public ISugarQueryable OrderBy(Expression> expression, OrderByType type = OrderByType.Asc) { _OrderBy(expression, type); return this; @@ -3450,7 +3735,7 @@ namespace SqlSugar _GroupBy(expression); return this; } - public ISugarQueryable GroupBy(Expression> expression) + public ISugarQueryable GroupBy(Expression> expression) { _GroupBy(expression); return this; @@ -3477,21 +3762,24 @@ namespace SqlSugar #endregion #region In - public new ISugarQueryable In(Expression> expression, params FieldType[] inValues) { + public new ISugarQueryable In(Expression> expression, params FieldType[] inValues) + { var isSingle = QueryBuilder.IsSingle(); var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); var fieldName = lamResult.GetResultString(); In(fieldName, inValues); return this; } - public new ISugarQueryable In(Expression> expression, List inValues) { + public new ISugarQueryable In(Expression> expression, List inValues) + { var isSingle = QueryBuilder.IsSingle(); var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); var fieldName = lamResult.GetResultString(); In(fieldName, inValues); return this; } - public new ISugarQueryable In(Expression> expression, ISugarQueryable childQueryExpression) { + public new ISugarQueryable In(Expression> expression, ISugarQueryable childQueryExpression) + { var sqlObj = childQueryExpression.ToSql(); _InQueryable(expression, sqlObj); return this; diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/UpdateProvider/UpdateableProvider.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/UpdateProvider/UpdateableProvider.cs index 1f953b691..9989e156f 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/UpdateProvider/UpdateableProvider.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/UpdateProvider/UpdateableProvider.cs @@ -8,12 +8,12 @@ using System.Threading.Tasks; namespace SqlSugar { - public class UpdateableProvider : IUpdateable + public class UpdateableProvider : IUpdateable where T : class, new() { public SqlSugarClient Context { get; internal set; } public EntityInfo EntityInfo { get; internal set; } public ISqlBuilder SqlBuilder { get; internal set; } - public UpdateBuilder UpdateBuilder { get; internal set; } + public UpdateBuilder UpdateBuilder { get; set; } public IAdo Ado { get { return Context.Ado; } } public T[] UpdateObjs { get; set; } public bool IsMappingTable { get { return this.Context.MappingTables != null && this.Context.MappingTables.Any(); } } @@ -33,6 +33,15 @@ namespace SqlSugar Check.Exception(UpdateBuilder.WhereValues.IsNullOrEmpty() && GetPrimaryKeys().IsNullOrEmpty(), "You cannot have no primary key and no conditions"); return this.Ado.ExecuteCommand(sql, UpdateBuilder.Parameters == null ? null : UpdateBuilder.Parameters.ToArray()); } + public Task ExecuteCommandAsync() + { + Task result = new Task(() => + { + IUpdateable asyncUpdateable = CopyUpdateable(); + return asyncUpdateable.ExecuteCommand(); + }); + return result; + } public IUpdateable AS(string tableName) { var entityName = typeof(T).Name; @@ -84,7 +93,7 @@ namespace SqlSugar if (this.WhereColumnList == null) this.WhereColumnList = new List(); foreach (var item in whereColumns) { - this.WhereColumnList.Add(this.Context.EntityProvider.GetDbColumnName(item)); + this.WhereColumnList.Add(this.Context.EntityProvider.GetDbColumnName(item)); } return this; } @@ -268,7 +277,8 @@ namespace SqlSugar } private List GetPrimaryKeys() { - if (this.WhereColumnList.IsValuable()) { + if (this.WhereColumnList.IsValuable()) + { return this.WhereColumnList; } if (this.Context.IsSystemTablesConfig) @@ -298,5 +308,28 @@ namespace SqlSugar this.Context.MappingTables = OldMappingTableList; } } + private IUpdateable CopyUpdateable() + { + var asyncContext = this.Context.CopyContext(this.Context.RewritableMethods.TranslateCopy(this.Context.CurrentConnectionConfig)); + asyncContext.CurrentConnectionConfig.IsAutoCloseConnection = true; + asyncContext.Ado.IsEnableLogEvent = this.Context.Ado.IsEnableLogEvent; + asyncContext.Ado.LogEventStarting = this.Context.Ado.LogEventStarting; + asyncContext.Ado.LogEventCompleted = this.Context.Ado.LogEventCompleted; + asyncContext.Ado.ProcessingEventStartingSQL = this.Context.Ado.ProcessingEventStartingSQL; + + var asyncUpdateable = asyncContext.Updateable(this.UpdateObjs); + var asyncUpdateableBuilder = asyncUpdateable.UpdateBuilder; + asyncUpdateableBuilder.DbColumnInfoList = this.UpdateBuilder.DbColumnInfoList; + asyncUpdateableBuilder.IsNoUpdateNull = this.UpdateBuilder.IsNoUpdateNull; + asyncUpdateableBuilder.Parameters = this.UpdateBuilder.Parameters; + asyncUpdateableBuilder.sql = this.UpdateBuilder.sql; + asyncUpdateableBuilder.WhereValues = this.UpdateBuilder.WhereValues; + asyncUpdateableBuilder.TableWithString = this.UpdateBuilder.TableWithString; + asyncUpdateableBuilder.TableName = this.UpdateBuilder.TableName; + asyncUpdateableBuilder.PrimaryKeys = this.UpdateBuilder.PrimaryKeys; + asyncUpdateableBuilder.IsOffIdentity = this.UpdateBuilder.IsOffIdentity; + asyncUpdateableBuilder.SetValues = this.UpdateBuilder.SetValues; + return asyncUpdateable; + } } } diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Entities/ConnectionConfig.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Entities/ConnectionConfig.cs index 59057cdbb..006a693c3 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Entities/ConnectionConfig.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Entities/ConnectionConfig.cs @@ -10,7 +10,7 @@ namespace SqlSugar /// ///DbType.SqlServer Or Other /// - public string DbType { get; set; } + public DbType DbType { get; set; } /// ///Database Connection string /// diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Entities/DbType.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Entities/DbType.cs deleted file mode 100644 index 202b23010..000000000 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Entities/DbType.cs +++ /dev/null @@ -1,15 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; - -namespace SqlSugar -{ - public partial class DbType - { - public const string MySql = "MySql"; - public const string SqlServer = "SqlServer"; - public const string Sqlite = "Sqlite"; - public const string Oracle = "Oracle"; - } -} diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Entities/ModelContext.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Entities/ModelContext.cs index 32ec11834..aec879c4f 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Entities/ModelContext.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Entities/ModelContext.cs @@ -1,4 +1,5 @@ -using System; +using Newtonsoft.Json; +using System; using System.Collections.Generic; using System.Linq; using System.Text; @@ -8,6 +9,7 @@ namespace SqlSugar public class ModelContext { [SugarColumn(IsIgnore = true)] + [JsonIgnore] public SqlSugarClient Context { get; set; } public ISugarQueryable CreateMapping() where T : class, new() { diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Enum/DbType.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Enum/DbType.cs new file mode 100644 index 000000000..51be78f4e --- /dev/null +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Enum/DbType.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace SqlSugar +{ + public enum DbType + { + MySql , + SqlServer, + Sqlite, + Oracle + } +} diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/ExpressionsToSql/Common/SugarParameter.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/ExpressionsToSql/Common/SugarParameter.cs index 816ba1072..1a75b0966 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/ExpressionsToSql/Common/SugarParameter.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/ExpressionsToSql/Common/SugarParameter.cs @@ -71,6 +71,11 @@ namespace SqlSugar { this.DbType = System.Data.DbType.Boolean; } + else if (type == UtilConstants.StringType) + { + this.DbType = System.Data.DbType.String; + } + } public SugarParameter(string name, object value, bool isOutput) { diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Infrastructure/InstanceFactory.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Infrastructure/InstanceFactory.cs index 525f912a9..db3d42196 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Infrastructure/InstanceFactory.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Infrastructure/InstanceFactory.cs @@ -21,7 +21,7 @@ namespace SqlSugar else { string className = "Queryable"; - className = GetClassName(currentConnectionConfig.DbType, className); + className = GetClassName(currentConnectionConfig.DbType.ToString(), className); ISugarQueryable result = CreateInstance>(className); return result; } @@ -35,7 +35,7 @@ namespace SqlSugar else { string className = "Queryable"; - className = GetClassName(currentConnectionConfig.DbType, className); + className = GetClassName(currentConnectionConfig.DbType.ToString(), className); ISugarQueryable result = CreateInstance>(className); return result; } @@ -49,7 +49,7 @@ namespace SqlSugar else { string className = "Queryable"; - className = GetClassName(currentConnectionConfig.DbType, className); + className = GetClassName(currentConnectionConfig.DbType.ToString(), className); ISugarQueryable result = CreateInstance>(className); return result; } @@ -57,35 +57,35 @@ namespace SqlSugar public static ISugarQueryable GetQueryable(ConnectionConfig currentConnectionConfig) { string className = "Queryable"; - className = GetClassName(currentConnectionConfig.DbType, className); + className = GetClassName(currentConnectionConfig.DbType.ToString(), className); ISugarQueryable result = CreateInstance>(className); return result; } public static ISugarQueryable GetQueryable(ConnectionConfig currentConnectionConfig) { string className = "Queryable"; - className = GetClassName(currentConnectionConfig.DbType, className); + className = GetClassName(currentConnectionConfig.DbType.ToString(), className); ISugarQueryable result = CreateInstance>(className); return result; } public static ISugarQueryable GetQueryable(ConnectionConfig currentConnectionConfig) { string className = "Queryable"; - className = GetClassName(currentConnectionConfig.DbType, className); + className = GetClassName(currentConnectionConfig.DbType.ToString(), className); ISugarQueryable result = CreateInstance>(className); return result; } public static ISugarQueryable GetQueryable(ConnectionConfig currentConnectionConfig) { string className = "Queryable"; - className = GetClassName(currentConnectionConfig.DbType, className); + className = GetClassName(currentConnectionConfig.DbType.ToString(), className); ISugarQueryable result = CreateInstance>(className); return result; } public static ISugarQueryable GetQueryable(ConnectionConfig currentConnectionConfig) { string className = "Queryable"; - className = GetClassName(currentConnectionConfig.DbType, className); + className = GetClassName(currentConnectionConfig.DbType.ToString(), className); ISugarQueryable result = CreateInstance>(className); return result; } @@ -94,28 +94,28 @@ namespace SqlSugar public static ISugarQueryable GetQueryable(ConnectionConfig currentConnectionConfig) { string className = "Queryable"; - className = GetClassName(currentConnectionConfig.DbType, className); + className = GetClassName(currentConnectionConfig.DbType.ToString(), className); ISugarQueryable result = CreateInstance>(className); return result; } public static ISugarQueryable GetQueryable(ConnectionConfig currentConnectionConfig) { string className = "Queryable"; - className = GetClassName(currentConnectionConfig.DbType, className); + className = GetClassName(currentConnectionConfig.DbType.ToString(), className); ISugarQueryable result = CreateInstance>(className); return result; } public static ISugarQueryable GetQueryable(ConnectionConfig currentConnectionConfig) { string className = "Queryable"; - className = GetClassName(currentConnectionConfig.DbType, className); + className = GetClassName(currentConnectionConfig.DbType.ToString(), className); ISugarQueryable result = CreateInstance>(className); return result; } public static ISugarQueryable GetQueryable(ConnectionConfig currentConnectionConfig) { string className = "Queryable"; - className = GetClassName(currentConnectionConfig.DbType, className); + className = GetClassName(currentConnectionConfig.DbType.ToString(), className); ISugarQueryable result = CreateInstance>(className); return result; } @@ -131,23 +131,23 @@ namespace SqlSugar } else { - QueryBuilder result = CreateInstance(GetClassName(currentConnectionConfig.DbType, "QueryBuilder")); + QueryBuilder result = CreateInstance(GetClassName(currentConnectionConfig.DbType.ToString(), "QueryBuilder")); return result; } } public static InsertBuilder GetInsertBuilder(ConnectionConfig currentConnectionConfig) { - InsertBuilder result = CreateInstance(GetClassName(currentConnectionConfig.DbType, "InsertBuilder")); + InsertBuilder result = CreateInstance(GetClassName(currentConnectionConfig.DbType.ToString(), "InsertBuilder")); return result; } public static UpdateBuilder GetUpdateBuilder(ConnectionConfig currentConnectionConfig) { - UpdateBuilder result = CreateInstance(GetClassName(currentConnectionConfig.DbType, "UpdateBuilder")); + UpdateBuilder result = CreateInstance(GetClassName(currentConnectionConfig.DbType.ToString(), "UpdateBuilder")); return result; } public static DeleteBuilder GetDeleteBuilder(ConnectionConfig currentConnectionConfig) { - DeleteBuilder result = CreateInstance(GetClassName(currentConnectionConfig.DbType, "DeleteBuilder")); + DeleteBuilder result = CreateInstance(GetClassName(currentConnectionConfig.DbType.ToString(), "DeleteBuilder")); return result; } @@ -159,44 +159,44 @@ namespace SqlSugar } else { - ILambdaExpressions result = CreateInstance(GetClassName(currentConnectionConfig.DbType, "ExpressionContext")); + ILambdaExpressions result = CreateInstance(GetClassName(currentConnectionConfig.DbType.ToString(), "ExpressionContext")); return result; } } public static ISqlBuilder GetSqlbuilder(ConnectionConfig currentConnectionConfig) { - ISqlBuilder result = CreateInstance(GetClassName(currentConnectionConfig.DbType, "Builder")); + ISqlBuilder result = CreateInstance(GetClassName(currentConnectionConfig.DbType.ToString(), "Builder")); return result; } public static IDbBind GetDbBind(ConnectionConfig currentConnectionConfig) { - IDbBind result = CreateInstance(GetClassName(currentConnectionConfig.DbType, "DbBind")); + IDbBind result = CreateInstance(GetClassName(currentConnectionConfig.DbType.ToString(), "DbBind")); return result; } public static IDbMaintenance GetDbMaintenance(ConnectionConfig currentConnectionConfig) { - IDbMaintenance result = CreateInstance(GetClassName(currentConnectionConfig.DbType, "DbMaintenance")); + IDbMaintenance result = CreateInstance(GetClassName(currentConnectionConfig.DbType.ToString(), "DbMaintenance")); return result; } public static IDbFirst GetDbFirst(ConnectionConfig currentConnectionConfig) { - IDbFirst result = CreateInstance(GetClassName(currentConnectionConfig.DbType, "DbFirst")); + IDbFirst result = CreateInstance(GetClassName(currentConnectionConfig.DbType.ToString(), "DbFirst")); return result; } public static ICodeFirst GetCodeFirst(ConnectionConfig currentConnectionConfig) { - ICodeFirst result = CreateInstance(GetClassName(currentConnectionConfig.DbType, "CodeFirst")); + ICodeFirst result = CreateInstance(GetClassName(currentConnectionConfig.DbType.ToString(), "CodeFirst")); return result; } public static IAdo GetAdo(ConnectionConfig currentConnectionConfig) { - IAdo result = CreateInstance(GetClassName(currentConnectionConfig.DbType, "Provider")); + IAdo result = CreateInstance(GetClassName(currentConnectionConfig.DbType.ToString(), "Provider")); return result; } diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Interface/IDeleteable.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Interface/IDeleteable.cs index 8ccac6cee..a564e051f 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Interface/IDeleteable.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Interface/IDeleteable.cs @@ -9,7 +9,9 @@ namespace SqlSugar { public interface IDeleteable where T : class, new() { + DeleteBuilder DeleteBuilder { get; set; } int ExecuteCommand(); + Task ExecuteCommandAsync(); IDeleteable AS(string tableName); IDeleteable With(string lockString); IDeleteable Where(T deleteObj); diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Interface/IQueryable.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Interface/IQueryable.cs index e72d4a6cd..5bfa66e1f 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Interface/IQueryable.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Interface/IQueryable.cs @@ -5,12 +5,15 @@ using System.Data.SqlClient; using System.Linq; using System.Linq.Expressions; using System.Text; +using System.Threading.Tasks; + namespace SqlSugar { public partial interface ISugarQueryable { SqlSugarClient Context { get; set; } ISqlBuilder SqlBuilder { get; set; } + QueryBuilder QueryBuilder { get; set; } ISugarQueryable AS(string tableName); ISugarQueryable AS(string tableName); @@ -51,45 +54,67 @@ namespace SqlSugar ISugarQueryable Take(int num); T Single(); + Task SingleAsync(); T Single(Expression> expression); + Task SingleAsync(Expression> expression); T First(); + Task FirstAsync(); T First(Expression> expression); + Task FirstAsync(Expression> expression); bool Any(Expression> expression); + Task AnyAsync(Expression> expression); bool Any(); - + Task AnyAsync(); + ISugarQueryable Select(Expression> expression); ISugarQueryable Select(string select); ISugarQueryable Select(string select); ISugarQueryable MergeTable(); int Count(); + Task CountAsync(); TResult Max(string maxField); + Task MaxAsync(string maxField); TResult Max(Expression> expression); + Task MaxAsync(Expression> expression); TResult Min(string minField); + Task MinAsync(string minField); TResult Min(Expression> expression); + Task MinAsync(Expression> expression); TResult Sum(string sumField); + Task SumAsync(string sumField); TResult Sum(Expression> expression); + Task SumAsync(Expression> expression); TResult Avg(string avgField); + Task AvgAsync(string avgField); TResult Avg(Expression> expression); + Task AvgAsync(Expression> expression); List ToList(); + Task> ToListAsync(); string ToJson(); + Task ToJsonAsync(); string ToJsonPage(int pageIndex, int pageSize); + Task ToJsonPageAsync(int pageIndex, int pageSize); string ToJsonPage(int pageIndex, int pageSize, ref int totalNumber); - + Task> ToJsonPageAsync(int pageIndex, int pageSize, int totalNumber); KeyValuePair> ToSql(); DataTable ToDataTable(); + Task ToDataTableAsync(); DataTable ToDataTablePage(int pageIndex, int pageSize); + Task ToDataTablePageAsync(int pageIndex, int pageSize); DataTable ToDataTablePage(int pageIndex, int pageSize, ref int totalNumber); + Task> ToDataTablePageAsync(int pageIndex, int pageSize, int totalNumber); List ToPageList(int pageIndex, int pageSize); + Task> ToPageListAsync(int pageIndex, int pageSize); List ToPageList(int pageIndex, int pageSize, ref int totalNumber); - + Task,int>> ToPageListAsync(int pageIndex, int pageSize, int totalNumber); void Clear(); } public partial interface ISugarQueryable : ISugarQueryable diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Interface/IUpdateable.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Interface/IUpdateable.cs index 1304fbee5..1de0a953d 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Interface/IUpdateable.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Interface/IUpdateable.cs @@ -7,9 +7,11 @@ using System.Threading.Tasks; namespace SqlSugar { - public interface IUpdateable + public interface IUpdateable where T : class, new() { + UpdateBuilder UpdateBuilder { get; set; } int ExecuteCommand(); + Task ExecuteCommandAsync(); IUpdateable AS(string tableName); IUpdateable With(string lockString); IUpdateable Where(bool isNoUpdateNull,bool IsOffIdentity = false); diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Interface/Insertable.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Interface/Insertable.cs index a722476b8..862739ccd 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Interface/Insertable.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Interface/Insertable.cs @@ -9,11 +9,17 @@ namespace SqlSugar { public interface IInsertable { + InsertBuilder InsertBuilder { get; set; } int ExecuteCommand(); + Task ExecuteCommandAsync(); int ExecuteReturnIdentity(); + Task ExecuteReturnIdentityAsync(); T ExecuteReturnEntity(); + Task ExecuteReturnEntityAsync(); bool ExecuteCommandIdentityIntoEntity(); + Task ExecuteCommandIdentityIntoEntityAsync(); long ExecuteReturnBigIdentity(); + Task ExecuteReturnBigIdentityAsync(); IInsertable AS(string tableName); IInsertable With(string lockString); IInsertable InsertColumns(Expression> columns); diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Realization/SqlServer/DbMaintenance/SqlServerDbMaintenance.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Realization/SqlServer/DbMaintenance/SqlServerDbMaintenance.cs index e31095aa6..64b221bd1 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Realization/SqlServer/DbMaintenance/SqlServerDbMaintenance.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Realization/SqlServer/DbMaintenance/SqlServerDbMaintenance.cs @@ -12,7 +12,7 @@ namespace SqlSugar { get { - string sql = @"SELECT Sysobjects.name AS TableName, + string sql = @"SELECT sysobjects.name AS TableName, syscolumns.Id AS TableId, syscolumns.name AS DbColumnName, systypes.name AS DataType, @@ -60,7 +60,7 @@ namespace SqlSugar { return @"SELECT s.Name,Convert(varchar(max),tbp.value) as Description FROM sysobjects s - LEFT JOIN sys.extended_properties as tbp ON s.id=tbp.major_id and tbp.minor_id=0 WHERE s.xtype IN('U') AND (tbp.Name='MS_Description' OR tbp.Name is null)"; + LEFT JOIN sys.extended_properties as tbp ON s.id=tbp.major_id and tbp.minor_id=0 AND (tbp.Name='MS_Description' OR tbp.Name is null) WHERE s.xtype IN('U') "; } } protected override string GetViewInfoListSql @@ -69,7 +69,7 @@ namespace SqlSugar { return @"SELECT s.Name,Convert(varchar(max),tbp.value) as Description FROM sysobjects s - LEFT JOIN sys.extended_properties as tbp ON s.id=tbp.major_id and tbp.minor_id=0 WHERE s.xtype IN('V') AND (tbp.Name='MS_Description' OR tbp.Name is null)"; + LEFT JOIN sys.extended_properties as tbp ON s.id=tbp.major_id and tbp.minor_id=0 AND (tbp.Name='MS_Description' OR tbp.Name is null) WHERE s.xtype IN('V') "; } } #endregion diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/SqlSugar.csproj b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/SqlSugar.csproj index 56ee234d5..adca1d16a 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/SqlSugar.csproj +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/SqlSugar.csproj @@ -2,7 +2,7 @@ netstandard2.0 - 4.5.0.2 + 4.5.1 sunkaixuan https://github.com/sunkaixuan/SqlSugar diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/SqlSugarClient.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/SqlSugarClient.cs index 52ae2e438..f2be29e5b 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/SqlSugarClient.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/SqlSugarClient.cs @@ -565,6 +565,14 @@ namespace SqlSugar this.Ado.Dispose(); } } + internal SqlSugarClient CopyContext(ConnectionConfig config) + { + var newClient = new SqlSugarClient(config); + newClient.MappingColumns = this.Context.MappingColumns; + newClient.MappingTables = this.Context.MappingTables; + newClient.IgnoreColumns = this.Context.IgnoreColumns; + return newClient; + } #endregion } } diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/SqlSugarForCore.nuspec b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/SqlSugarForCore.nuspec index f94c6e362..f56a5110f 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/SqlSugarForCore.nuspec +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/SqlSugarForCore.nuspec @@ -2,7 +2,7 @@ sqlSugarCore - 4.5.0.2 + 4.5.1 sunkaixuan Landa http://www.apache.org/licenses/LICENSE-2.0.html diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqliteTest/DataBase/SqlSugar4xTest.sqlite b/Src/Asp.NetCore2/SqlSeverTest/SqliteTest/DataBase/SqlSugar4xTest.sqlite index 63aad0f6a..9ff5e9ad4 100644 Binary files a/Src/Asp.NetCore2/SqlSeverTest/SqliteTest/DataBase/SqlSugar4xTest.sqlite and b/Src/Asp.NetCore2/SqlSeverTest/SqliteTest/DataBase/SqlSugar4xTest.sqlite differ diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqliteTest/Demos/1_Query.cs b/Src/Asp.NetCore2/SqlSeverTest/SqliteTest/Demos/1_Query.cs index 02a8c959b..517248c2c 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqliteTest/Demos/1_Query.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqliteTest/Demos/1_Query.cs @@ -166,7 +166,7 @@ namespace OrmTest.Demo var getNew = db.Queryable().Where(it => it.Id == 1).Select(it => new { id = SqlFunc.IIF(it.Id == 0, 1, it.Id), it.Name, it.SchoolId }).ToList(); var getAllNoLock = db.Queryable().With(SqlWith.NoLock).ToList(); var getByPrimaryKey = db.Queryable().InSingle(2); - var getSingleOrDefault = db.Queryable().Single(); + var getSingleOrDefault = db.Queryable().Where(it => it.Id == 1).Single(); var getFirstOrDefault = db.Queryable().First(); var getByWhere = db.Queryable().Where(it => it.Id == 1 || it.Name == "a").ToList(); var getByFuns = db.Queryable().Where(it => SqlFunc.IsNullOrEmpty(it.Name)).ToList();