From c276ee5cd57974cb2e03c47775ae023af33de750 Mon Sep 17 00:00:00 2001 From: sunkaixuna <610262374@qq.com> Date: Sun, 22 Aug 2021 08:58:49 +0800 Subject: [PATCH] Update Core --- .../InsertableProvider/SubInserable.cs | 1 + .../QueryableProvider/QueryableProvider.cs | 28 ++++++---- .../Abstract/SaveableProvider/Storageable.cs | 4 ++ .../SqlBuilderProvider/InsertBuilder.cs | 4 ++ .../SqlBuilderProvider/SqlBuilderProvider.cs | 19 ++++++- .../UpdateProvider/UpdateableProvider.cs | 2 +- .../SqlSugar/CacheScheme/CacheSchemeMain.cs | 3 +- .../SqlSugar/Entities/CacheKey.cs | 5 +- .../SqlSugar/Enum/ConditionalType.cs | 1 + .../ExpressionsToSql/Subquery/Items/SubAs.cs | 52 +++++++++++++++++++ .../ExpressionsToSql/Subquery/SubResolve.cs | 24 ++++++++- .../ExpressionsToSql/Subquery/SubTools.cs | 3 +- .../ExpressionsToSql/Subquery/Subquerable.cs | 4 ++ .../SqlSugar/Interface/IQueryable.cs | 1 + .../SqlSugar/Interface/ISugarRepository.cs | 13 +++++ .../Oracle/Updateable/OracleUpdateable.cs | 17 ++++++ .../SqlSeverTest/SqlSugar/SimpleClient.cs | 5 -- 17 files changed, 164 insertions(+), 22 deletions(-) create mode 100644 Src/Asp.NetCore2/SqlSeverTest/SqlSugar/ExpressionsToSql/Subquery/Items/SubAs.cs create mode 100644 Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Interface/ISugarRepository.cs diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/InsertableProvider/SubInserable.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/InsertableProvider/SubInserable.cs index 32fede984..ea925cbbb 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/InsertableProvider/SubInserable.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/InsertableProvider/SubInserable.cs @@ -125,6 +125,7 @@ namespace SqlSugar if (isIdEntity) { id = this.Context.Insertable(InsertObject).ExecuteReturnIdentity(); + this.Entity.Columns.First(it => it.IsIdentity || it.OracleSequenceName.HasValue()).PropertyInfo.SetValue(InsertObject, id); } var pk = GetPrimaryKey(this.Entity, InsertObject, id); AddChildList(this.SubList, InsertObject, pk); diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs index e998ca54b..ddc01aa4e 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs @@ -26,6 +26,7 @@ namespace SqlSugar public List>> Mappers { get; set; } public bool IsCache { get; set; } public int CacheTime { get; set; } + public string CacheKey { get; set; } public bool IsAs { get; set; } public QueryBuilder QueryBuilder { @@ -434,7 +435,7 @@ namespace SqlSugar public virtual ISugarQueryable Where(List conditionalModels) { if (conditionalModels.IsNullOrEmpty()) return this; - var sqlObj = this.SqlBuilder.ConditionalModelToSql(conditionalModels); + var sqlObj = this.SqlBuilder.ConditionalModelToSql(conditionalModels,0); return this.Where(sqlObj.Key, sqlObj.Value); } @@ -817,7 +818,7 @@ namespace SqlSugar if (IsCache) { var cacheService = this.Context.CurrentConnectionConfig.ConfigureExternalServices.DataInfoCacheService; - result = CacheSchemeMain.GetOrCreate(cacheService, this.QueryBuilder, () => { return GetCount(); }, CacheTime, this.Context); + result = CacheSchemeMain.GetOrCreate(cacheService, this.QueryBuilder, () => { return GetCount(); }, CacheTime, this.Context,CacheKey); } else { @@ -904,7 +905,7 @@ namespace SqlSugar var result = CacheSchemeMain.GetOrCreate(cacheService, this.QueryBuilder, () => { return this.Context.Utilities.SerializeObject(this.ToList(), typeof(T)); - }, CacheTime, this.Context); + }, CacheTime, this.Context,CacheKey); return result; } else @@ -1027,7 +1028,7 @@ namespace SqlSugar if (IsCache) { var cacheService = this.Context.CurrentConnectionConfig.ConfigureExternalServices.DataInfoCacheService; - result = CacheSchemeMain.GetOrCreate(cacheService, this.QueryBuilder, () => { return this.Db.GetDataTable(sqlObj.Key, sqlObj.Value.ToArray()); }, CacheTime, this.Context); + result = CacheSchemeMain.GetOrCreate(cacheService, this.QueryBuilder, () => { return this.Db.GetDataTable(sqlObj.Key, sqlObj.Value.ToArray()); }, CacheTime, this.Context,CacheKey); } else { @@ -1187,6 +1188,15 @@ namespace SqlSugar return _ToSql(); } } + public ISugarQueryable WithCache(string cacheKey, int cacheDurationInSeconds = int.MaxValue) + { + cacheDurationInSeconds = SetCacheTime(cacheDurationInSeconds); + Check.ArgumentNullException(this.Context.CurrentConnectionConfig.ConfigureExternalServices.DataInfoCacheService, "Use Cache ConnectionConfig.ConfigureExternalServices.DataInfoCacheService is required "); + this.IsCache = true; + this.CacheTime = cacheDurationInSeconds; + this.CacheKey = cacheKey; + return this; + } public ISugarQueryable WithCache(int cacheDurationInSeconds = int.MaxValue) { cacheDurationInSeconds = SetCacheTime(cacheDurationInSeconds); @@ -1322,7 +1332,7 @@ namespace SqlSugar if (IsCache) { var cacheService = this.Context.CurrentConnectionConfig.ConfigureExternalServices.DataInfoCacheService; - result = CacheSchemeMain.GetOrCreate(cacheService, this.QueryBuilder, () => { return GetCount(); }, CacheTime, this.Context); + result = CacheSchemeMain.GetOrCreate(cacheService, this.QueryBuilder, () => { return GetCount(); }, CacheTime, this.Context,CacheKey); } else { @@ -1415,7 +1425,7 @@ namespace SqlSugar var result = CacheSchemeMain.GetOrCreate(cacheService, this.QueryBuilder, () => { return this.Context.Utilities.SerializeObject(this.ToList(), typeof(T)); - }, CacheTime, this.Context); + }, CacheTime, this.Context,CacheKey); return result; } else @@ -1444,7 +1454,7 @@ namespace SqlSugar if (IsCache) { var cacheService = this.Context.CurrentConnectionConfig.ConfigureExternalServices.DataInfoCacheService; - result = CacheSchemeMain.GetOrCreate(cacheService, this.QueryBuilder, () => { return this.Db.GetDataTable(sqlObj.Key, sqlObj.Value.ToArray()); }, CacheTime, this.Context); + result = CacheSchemeMain.GetOrCreate(cacheService, this.QueryBuilder, () => { return this.Db.GetDataTable(sqlObj.Key, sqlObj.Value.ToArray()); }, CacheTime, this.Context,CacheKey); } else { @@ -1798,7 +1808,7 @@ namespace SqlSugar if (IsCache) { var cacheService = this.Context.CurrentConnectionConfig.ConfigureExternalServices.DataInfoCacheService; - result = CacheSchemeMain.GetOrCreate>(cacheService, this.QueryBuilder, () => { return GetData(sqlObj); }, CacheTime, this.Context); + result = CacheSchemeMain.GetOrCreate>(cacheService, this.QueryBuilder, () => { return GetData(sqlObj); }, CacheTime, this.Context,CacheKey); } else { @@ -1815,7 +1825,7 @@ namespace SqlSugar if (IsCache) { var cacheService = this.Context.CurrentConnectionConfig.ConfigureExternalServices.DataInfoCacheService; - result = CacheSchemeMain.GetOrCreate>(cacheService, this.QueryBuilder, () => { return GetData(sqlObj); }, CacheTime, this.Context); + result = CacheSchemeMain.GetOrCreate>(cacheService, this.QueryBuilder, () => { return GetData(sqlObj); }, CacheTime, this.Context,CacheKey); } else { diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/SaveableProvider/Storageable.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/SaveableProvider/Storageable.cs index e1a6babd7..336a37dae 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/SaveableProvider/Storageable.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/SaveableProvider/Storageable.cs @@ -203,6 +203,10 @@ namespace SqlSugar foreach (var item in whereColumns) { var value = item.PropertyInfo.GetValue(dataItem.Item, null); + if (value != null&&value.GetType().IsEnum()) + { + value = Convert.ToInt64(value); + } condition.ConditionalList.Add(new KeyValuePair(i==0?WhereType.Or :WhereType.And, new ConditionalModel() { FieldName = item.DbColumnName, diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/SqlBuilderProvider/InsertBuilder.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/SqlBuilderProvider/InsertBuilder.cs index 29653e29c..514b8a78c 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/SqlBuilderProvider/InsertBuilder.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/SqlBuilderProvider/InsertBuilder.cs @@ -206,6 +206,10 @@ namespace SqlSugar { return "N'" + value.ToString().ToSqlFilter() + "'"; } + else if (type == UtilConstants.FloatType) + { + return "N'" +Convert.ToDouble(value).ToString() + "'"; + } else { return "N'" + value.ToString() + "'"; diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/SqlBuilderProvider/SqlBuilderProvider.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/SqlBuilderProvider/SqlBuilderProvider.cs index a98e6ae43..b7f800ad8 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/SqlBuilderProvider/SqlBuilderProvider.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/SqlBuilderProvider/SqlBuilderProvider.cs @@ -122,19 +122,20 @@ namespace SqlSugar StringBuilder builder = new StringBuilder(); List parameters = new List(); var sqlBuilder = InstanceFactory.GetSqlbuilder(this.Context.CurrentConnectionConfig); + var mainIndex = 0; foreach (var model in models) { if (model is ConditionalModel) { var item = model as ConditionalModel; - var index = models.IndexOf(item) + beginIndex; + var index = mainIndex + beginIndex; var type = index == 0 ? "" : "AND"; if (beginIndex > 0) { type = null; } string temp = " {0} {1} {2} {3} "; - string parameterName = string.Format("{0}Conditional{1}{2}", sqlBuilder.SqlParameterKeyWord, item.FieldName, index); + string parameterName = string.Format("{0}Condit{1}{2}", sqlBuilder.SqlParameterKeyWord, item.FieldName, index); if (parameterName.Contains(".")) { parameterName = parameterName.Replace(".", "_"); @@ -231,6 +232,19 @@ namespace SqlSugar parameters.Add(new SugarParameter(parameterName, GetFieldValue(item))); } break; + case ConditionalType.InLike: + var array =(item.FieldValue+"").Split(',').ToList(); + List sqls = new List(); + int i = 0; + foreach (var val in array) + { + var itemParameterName = $"{ parameterName}{index}{i}"; + sqls.Add(item.FieldName.ToSqlFilter()+ " LIKE " + itemParameterName); + parameters.Add(new SugarParameter(itemParameterName, "%" + val + "%")); + i++; + } + builder.Append($" ({string.Join(" OR ", sqls)}) "); + break; default: break; } @@ -275,6 +289,7 @@ namespace SqlSugar } } } + mainIndex++; } return new KeyValuePair(builder.ToString(), parameters.ToArray()); } diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/UpdateProvider/UpdateableProvider.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/UpdateProvider/UpdateableProvider.cs index 3d82db7c6..d6fb4807f 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/UpdateProvider/UpdateableProvider.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/UpdateProvider/UpdateableProvider.cs @@ -66,7 +66,7 @@ namespace SqlSugar { return this.ExecuteCommand() > 0; } - public async Task ExecuteCommandAsync() + public virtual async Task ExecuteCommandAsync() { string sql = _ExecuteCommand(); if (string.IsNullOrEmpty(sql)) diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/CacheScheme/CacheSchemeMain.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/CacheScheme/CacheSchemeMain.cs index c487e330d..a40ac9fa4 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/CacheScheme/CacheSchemeMain.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/CacheScheme/CacheSchemeMain.cs @@ -7,9 +7,10 @@ namespace SqlSugar { internal class CacheSchemeMain { - public static T GetOrCreate(ICacheService cacheService, QueryBuilder queryBuilder, Func getData, int cacheDurationInSeconds, SqlSugarProvider context) + public static T GetOrCreate(ICacheService cacheService, QueryBuilder queryBuilder, Func getData, int cacheDurationInSeconds, SqlSugarProvider context,string cacheKey) { CacheKey key = CacheKeyBuider.GetKey(context, queryBuilder); + key.AppendKey = cacheKey; string keyString = key.ToString(); var result = cacheService.GetOrCreate(keyString, getData, cacheDurationInSeconds); return result; diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Entities/CacheKey.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Entities/CacheKey.cs index 40cd87ade..0c7df50ea 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Entities/CacheKey.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Entities/CacheKey.cs @@ -7,12 +7,15 @@ namespace SqlSugar { public class CacheKey { + public string AppendKey { get; set; } public string Database { get; set; } public List Tables { get; set; } public List IdentificationList { get; set; } public new string ToString() { - return "SqlSugarDataCache" + UtilConstants.Dot + string.Join(UtilConstants.Dot, this.Tables) +UtilConstants.Dot+ string.Join(UtilConstants.Dot, this.IdentificationList.Where(it=>it.HasValue())); + var result= "SqlSugarDataCache" + UtilConstants.Dot + string.Join(UtilConstants.Dot, this.Tables) +UtilConstants.Dot+ string.Join(UtilConstants.Dot, this.IdentificationList.Where(it=>it.HasValue())); + result = result + AppendKey; + return result; } } } diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Enum/ConditionalType.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Enum/ConditionalType.cs index 9963eb72b..48969de9d 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Enum/ConditionalType.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Enum/ConditionalType.cs @@ -22,5 +22,6 @@ namespace SqlSugar IsNot=12, NoLike = 13, EqualNull = 14, + InLike=15 } } diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/ExpressionsToSql/Subquery/Items/SubAs.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/ExpressionsToSql/Subquery/Items/SubAs.cs new file mode 100644 index 000000000..2ea737768 --- /dev/null +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/ExpressionsToSql/Subquery/Items/SubAs.cs @@ -0,0 +1,52 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Linq.Expressions; +using System.Text; +using System.Threading.Tasks; + +namespace SqlSugar +{ + public class SubAs : ISubOperation + { + public bool HasWhere + { + get; set; + } + + public string Name + { + get + { + return "AS"; + } + } + + public Expression Expression + { + get; set; + } + + + public int Sort + { + get + { + return 200; + } + } + + public ExpressionContext Context + { + get; set; + } + + public string GetValue(Expression expression = null) + { + var exp = expression as MethodCallExpression; + var expString= SubTools.GetMethodValue(this.Context, exp.Arguments[0], ResolveExpressType.WhereSingle)?.Trim(); + var result = this.Context.Parameters.First(it => it.ParameterName == expString).Value+""; + return "$SubAs:"+result; + } + } +} diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/ExpressionsToSql/Subquery/SubResolve.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/ExpressionsToSql/Subquery/SubResolve.cs index 3807b861c..8bbf94830 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/ExpressionsToSql/Subquery/SubResolve.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/ExpressionsToSql/Subquery/SubResolve.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; using System.Text; +using System.Text.RegularExpressions; namespace SqlSugar { @@ -16,6 +17,7 @@ namespace SqlSugar { List allMethods = new List(); private ExpressionContext context = null; + private string subKey = "$SubAs:"; private bool hasWhere; public SubResolve(MethodCallExpression expression, ExpressionContext context, Expression oppsiteExpression) { @@ -85,14 +87,32 @@ namespace SqlSugar currentExpression = addItem; } } - public string GetSql() { List subItems = GetSubItems(); - var sql = string.Join(UtilConstants.Space, subItems); + var sqlItems = subItems.Where(it => !it.StartsWith(subKey)).ToList(); + var asItems = subItems.Where(it => it.StartsWith(subKey)).ToList(); + if (asItems.Any()) + { + GetSubAs(sqlItems, asItems); + } + var sql = string.Join(UtilConstants.Space, sqlItems); return this.context.DbMehtods.Pack(sql); } + private void GetSubAs(List sqlItems, List asItems) + { + for (int i = 0; i < sqlItems.Count; i++) + { + if (sqlItems[i].StartsWith("FROM " + this.context.SqlTranslationLeft)) + { + var asName = this.context.GetTranslationTableName(asItems.First().Replace(subKey, ""), false); + var repKey = $"\\{this.context.SqlTranslationLeft}.+\\{this.context.SqlTranslationRight}"; + sqlItems[i] = Regex.Replace(sqlItems[i], repKey, asName); + } + } + } + private List GetSubItems() { var isubList = this.allMethods.Select(exp => diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/ExpressionsToSql/Subquery/SubTools.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/ExpressionsToSql/Subquery/SubTools.cs index 879700a0e..a52a3c18f 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/ExpressionsToSql/Subquery/SubTools.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/ExpressionsToSql/Subquery/SubTools.cs @@ -31,7 +31,8 @@ namespace SqlSugar new SubAvg(){ Context=Context }, new SubOrderBy(){ Context=Context }, new SubOrderByDesc(){ Context=Context }, - new SubGroupBy(){ Context=Context} + new SubGroupBy(){ Context=Context}, + new SubAs(){Context=Context} }; } diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/ExpressionsToSql/Subquery/Subquerable.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/ExpressionsToSql/Subquery/Subquerable.cs index 67ce6cd53..c570916b4 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/ExpressionsToSql/Subquery/Subquerable.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/ExpressionsToSql/Subquery/Subquerable.cs @@ -10,6 +10,10 @@ namespace SqlSugar public class Subqueryable where T : class, new() { + public Subqueryable AS(string tableName) + { + return this; + } public Subqueryable InnerJoin(Func expression) { return this; diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Interface/IQueryable.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Interface/IQueryable.cs index 70aed59d2..0d25c6d28 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Interface/IQueryable.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Interface/IQueryable.cs @@ -165,6 +165,7 @@ namespace SqlSugar List ToPageList(int pageIndex, int pageSize, ref int totalNumber); List ToPageList(int pageIndex, int pageSize, ref int totalNumber,ref int totalPage); Task> ToPageListAsync(int pageIndex, int pageSize, RefAsync totalNumber); + ISugarQueryable WithCache(string cacheKey,int cacheDurationInSeconds = int.MaxValue); ISugarQueryable WithCache(int cacheDurationInSeconds = int.MaxValue); ISugarQueryable WithCacheIF(bool isCache, int cacheDurationInSeconds = int.MaxValue); string ToClassString(string className); diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Interface/ISugarRepository.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Interface/ISugarRepository.cs new file mode 100644 index 000000000..ca4821c81 --- /dev/null +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Interface/ISugarRepository.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SqlSugar +{ + public interface ISugarRepository + { + ISqlSugarClient Context { get; set; } + } +} diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Realization/Oracle/Updateable/OracleUpdateable.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Realization/Oracle/Updateable/OracleUpdateable.cs index 38888f7f5..61d872b1c 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Realization/Oracle/Updateable/OracleUpdateable.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Realization/Oracle/Updateable/OracleUpdateable.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Linq; using System.Text; +using System.Threading.Tasks; namespace SqlSugar { @@ -27,5 +28,21 @@ namespace SqlSugar return base.UpdateObjs.Count(); } } + public async override Task ExecuteCommandAsync() + { + if (base.UpdateObjs.Count() == 1) + { + return await base.ExecuteCommandAsync(); + } + else if (base.UpdateObjs.Count() == 0) + { + return 0; + } + else + { + await base.ExecuteCommandAsync(); + return base.UpdateObjs.Count(); + } + } } } diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/SimpleClient.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/SimpleClient.cs index db417ed45..f17e11256 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/SimpleClient.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/SimpleClient.cs @@ -319,9 +319,4 @@ namespace SqlSugar [Obsolete("Use AsSugarClient()")] public ISqlSugarClient FullClient { get { return this.Context; } } } - - public interface ISugarRepository - { - ISqlSugarClient Context { get; set; } - } }