diff --git a/Src/Asp.Net/SqlSugar/Abstract/ExecuteNavProvider/DeleteNavProvider.cs b/Src/Asp.Net/SqlSugar/Abstract/ExecuteNavProvider/DeleteNavProvider.cs index 98671784a..08fb15af4 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/ExecuteNavProvider/DeleteNavProvider.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/ExecuteNavProvider/DeleteNavProvider.cs @@ -7,35 +7,19 @@ using System.Threading.Tasks; namespace SqlSugar { - public class DeleteNavProvider + public class DeleteNavProvider where T : class, new() where Root : class, new() { + public SqlSugarProvider _Context { get; internal set; } - public List Roots { get; set; } - public SqlSugarProvider Context { get; internal set; } - - public DeleteNavProvider ThenInclude(Expression> expression) + public DeleteNavTask ThenInclude< TChild>(Expression> expression) + where TChild : class, new() { - throw new Exception("开发中7月15号之前上线"); + throw new NotImplementedException(); } - public DeleteNavProvider Include(Expression> expression) + public DeleteNavTask ThenInclude(Expression>> expression) + where TChild : class, new() { - throw new Exception("开发中7月15号之前上线"); - } - public DeleteNavProvider ThenInclude(Expression>> expression) - { - throw new Exception("开发中7月15号之前上线"); - } - public DeleteNavProvider Include(Expression>> expression) - { - throw new Exception("开发中7月15号之前上线"); - } - private DeleteNavProvider AsNav() - { - throw new Exception("开发中7月15号之前上线"); - } - public bool ExecuteCommand() - { - return true; + throw new NotImplementedException(); } } } diff --git a/Src/Asp.Net/SqlSugar/Abstract/ExecuteNavProvider/DeleteNavTask.cs b/Src/Asp.Net/SqlSugar/Abstract/ExecuteNavProvider/DeleteNavTask.cs new file mode 100644 index 000000000..1122b6508 --- /dev/null +++ b/Src/Asp.Net/SqlSugar/Abstract/ExecuteNavProvider/DeleteNavTask.cs @@ -0,0 +1,98 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Linq.Expressions; +using System.Text; +using System.Threading.Tasks; + +namespace SqlSugar +{ + public class DeleteNavTaskInit where T : class, new() where Root : class, new() + { + public List Roots { get; set; } + internal SqlSugarProvider Context { get; set; } + internal DeleteNavProvider deleteNavProvider { get; set; } + + public DeleteNavTask Include(Expression> expression) where TChild : class, new() + { + this.Context = deleteNavProvider._Context; + DeleteNavTask result = new DeleteNavTask(); + Func> func = () => deleteNavProvider.ThenInclude(expression); + result.PreFunc = func; + result.Context = this.Context; + return result; + } + public DeleteNavTask Include(Expression>> expression) where TChild : class, new() + { + this.Context = deleteNavProvider._Context; + DeleteNavTask result = new DeleteNavTask(); + Func> func = () => deleteNavProvider.ThenInclude(expression); + result.PreFunc = func; + result.Context = this.Context; + return result; + } + } + public class DeleteNavTask where T : class, new() where Root : class, new() + { + public SqlSugarProvider Context { get; set; } + public Func> PreFunc { get; set; } + public DeleteNavTask ThenInclude(Expression> expression) where TChild : class, new() + { + DeleteNavTask result = new DeleteNavTask(); + Func> func = () => PreFunc().ThenInclude(expression); + result.PreFunc = func; + result.Context = this.Context; + return result; + } + public DeleteNavTask ThenInclude(Expression>> expression) where TChild : class, new() + { + DeleteNavTask result = new DeleteNavTask(); + Func> func = () => PreFunc().ThenInclude(expression); + result.PreFunc = func; + result.Context = this.Context; + return result; + } + public DeleteNavTask Include(Expression> expression) where TChild : class, new() + { + return AsNav().ThenInclude(expression); + } + public DeleteNavTask Include(Expression>> expression) where TChild : class, new() + { + return AsNav().ThenInclude(expression); + } + public bool ExecuteCommand() + { + var hasTran = this.Context.Ado.Transaction != null; + if (hasTran) + { + PreFunc(); + } + else + { + this.Context.Ado.UseTran(() => + { + PreFunc(); + }, ex => throw ex); + } + return true; + } + public async Task ExecuteCommandAsync() + { + await Task.Run(async () => + { + ExecuteCommand(); + await Task.Delay(0); + }); + return true; + } + + private DeleteNavTask AsNav() + { + DeleteNavTask result = new DeleteNavTask(); + Func> func = () => PreFunc().AsNav(); + result.PreFunc = func; + result.Context = this.Context; + return result; + } + } +} diff --git a/Src/Asp.Net/SqlSugar/Abstract/SugarProvider/SqlSugarProvider.cs b/Src/Asp.Net/SqlSugar/Abstract/SugarProvider/SqlSugarProvider.cs index c6c46e5b8..bfc15ecba 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/SugarProvider/SqlSugarProvider.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/SugarProvider/SqlSugarProvider.cs @@ -903,17 +903,21 @@ namespace SqlSugar result.insertNavProvider = provider; return result; } - public DeleteNavProvider DeleteNav(T data) + public DeleteNavTaskInit DeleteNav(T data) where T : class, new() { return DeleteNav(new List() { data }); } - public DeleteNavProvider DeleteNav(List datas) + public DeleteNavTaskInit DeleteNav(List datas) where T : class, new() { - var result = new DeleteNavProvider(); + var result = new DeleteNavTaskInit(); result.Roots = datas; result.Context = this; return result; } + public DeleteNavTaskInit DeleteNav(Expression> whereExpression) where T : class, new() + { + return DeleteNav(this.Queryable().Where(whereExpression).ToList()); + } public UpdateNavProvider UpdateNav(T data) { return UpdateNav(new List() { data }); diff --git a/Src/Asp.Net/SqlSugar/Abstract/SugarProvider/SqlSugarScopeProvider.cs b/Src/Asp.Net/SqlSugar/Abstract/SugarProvider/SqlSugarScopeProvider.cs index bc43beeec..5351c2f87 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/SugarProvider/SqlSugarScopeProvider.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/SugarProvider/SqlSugarScopeProvider.cs @@ -686,14 +686,18 @@ namespace SqlSugar { return ScopedContext.InsertNav(datas); } - public DeleteNavProvider DeleteNav(T data) + public DeleteNavTaskInit DeleteNav(T data) where T : class, new() { return ScopedContext.DeleteNav(data); } - public DeleteNavProvider DeleteNav(List datas) + public DeleteNavTaskInit DeleteNav(List datas) where T : class, new() { return ScopedContext.DeleteNav(datas); } + public DeleteNavTaskInit DeleteNav(Expression> whereExpression) where T : class, new() + { + return ScopedContext.DeleteNav(whereExpression); + } public UpdateNavProvider UpdateNav(T data) { return ScopedContext.UpdateNav(data); diff --git a/Src/Asp.Net/SqlSugar/Interface/ISqlSugarClient.cs b/Src/Asp.Net/SqlSugar/Interface/ISqlSugarClient.cs index a64f8c06b..d6adad96b 100644 --- a/Src/Asp.Net/SqlSugar/Interface/ISqlSugarClient.cs +++ b/Src/Asp.Net/SqlSugar/Interface/ISqlSugarClient.cs @@ -205,8 +205,9 @@ namespace SqlSugar #region Nav CUD InsertNavTaskInit InsertNav(T data) where T : class, new(); InsertNavTaskInit InsertNav(List datas) where T : class, new(); - DeleteNavProvider DeleteNav(T data); - DeleteNavProvider DeleteNav(List datas); + DeleteNavTaskInit DeleteNav(T data) where T : class, new(); + DeleteNavTaskInit DeleteNav(List datas) where T : class, new(); + DeleteNavTaskInit DeleteNav(Expression> whereExpression) where T : class, new(); UpdateNavProvider UpdateNav(T data); UpdateNavProvider UpdateNav(List datas); #endregion diff --git a/Src/Asp.Net/SqlSugar/SqlSugar.csproj b/Src/Asp.Net/SqlSugar/SqlSugar.csproj index 688089e54..594043638 100644 --- a/Src/Asp.Net/SqlSugar/SqlSugar.csproj +++ b/Src/Asp.Net/SqlSugar/SqlSugar.csproj @@ -89,11 +89,12 @@ + - + diff --git a/Src/Asp.Net/SqlSugar/SqlSugarClient.cs b/Src/Asp.Net/SqlSugar/SqlSugarClient.cs index f97a8876b..71b105068 100644 --- a/Src/Asp.Net/SqlSugar/SqlSugarClient.cs +++ b/Src/Asp.Net/SqlSugar/SqlSugarClient.cs @@ -162,14 +162,18 @@ namespace SqlSugar { return this.Context.InsertNav(datas); } - public DeleteNavProvider DeleteNav(T data) + public DeleteNavTaskInit DeleteNav(T data) where T : class, new() { return this.Context.DeleteNav(data); } - public DeleteNavProvider DeleteNav(List datas) + public DeleteNavTaskInit DeleteNav(List datas) where T : class, new() { return this.Context.DeleteNav(datas); } + public DeleteNavTaskInit DeleteNav(Expression> whereExpression) where T : class, new() + { + return this.Context.DeleteNav(whereExpression); + } public UpdateNavProvider UpdateNav(T data) { return this.Context.UpdateNav(data); diff --git a/Src/Asp.Net/SqlSugar/SqlSugarScope.cs b/Src/Asp.Net/SqlSugar/SqlSugarScope.cs index aa0772e81..e4cd6924b 100644 --- a/Src/Asp.Net/SqlSugar/SqlSugarScope.cs +++ b/Src/Asp.Net/SqlSugar/SqlSugarScope.cs @@ -742,14 +742,18 @@ namespace SqlSugar { return ScopedContext.InsertNav(datas); } - public DeleteNavProvider DeleteNav(T data) + public DeleteNavTaskInit DeleteNav(T data) where T : class, new() { return ScopedContext.DeleteNav(data); } - public DeleteNavProvider DeleteNav(List datas) + public DeleteNavTaskInit DeleteNav(List datas) where T : class, new() { return ScopedContext.DeleteNav(datas); } + public DeleteNavTaskInit DeleteNav(Expression> whereExpression) where T : class, new() + { + return ScopedContext.DeleteNav(whereExpression); + } public UpdateNavProvider UpdateNav(T data) { return ScopedContext.UpdateNav(data);