diff --git a/Src/Asp.Net/SqlSugar/Abstract/DeleteProvider/DeleteNavMethodInfo.cs b/Src/Asp.Net/SqlSugar/Abstract/DeleteProvider/DeleteNavMethodInfo.cs new file mode 100644 index 000000000..c35761c8e --- /dev/null +++ b/Src/Asp.Net/SqlSugar/Abstract/DeleteProvider/DeleteNavMethodInfo.cs @@ -0,0 +1,53 @@ +using System; +using System.Collections.Generic; +using System.Linq.Expressions; +using System.Text; +using System.Threading.Tasks; + +namespace SqlSugar +{ + public class DeleteNavMethodInfo + { + internal object MethodInfos { get; set; } + internal SqlSugarProvider Context { get; set; } + + public DeleteNavMethodInfo IncludeByNameString(string navMemberName, UpdateNavOptions updateNavOptions = null) + { + var type = MethodInfos.GetType().GetGenericArguments()[0]; + var entityInfo = this.Context.EntityMaintenance.GetEntityInfo(type); + Type properyItemType; + bool isList; + Expression exp = UtilMethods.GetIncludeExpression(navMemberName, entityInfo, out properyItemType, out isList); + var method = this.MethodInfos.GetType().GetMyMethod("Include", 2, isList) + .MakeGenericMethod(properyItemType); + var obj = method.Invoke(this.MethodInfos, new object[] { exp, updateNavOptions }); + this.MethodInfos = obj; + return this; + } + public DeleteNavMethodInfo ThenIncludeByNameString(string navMemberName, UpdateNavOptions updateNavOptions = null) + { + var type = MethodInfos.GetType().GetGenericArguments()[1]; + var entityInfo = this.Context.EntityMaintenance.GetEntityInfo(type); + Type properyItemType; + bool isList; + Expression exp = UtilMethods.GetIncludeExpression(navMemberName, entityInfo, out properyItemType, out isList); + var method = this.MethodInfos.GetType().GetMyMethod("ThenInclude", 2, isList) + .MakeGenericMethod(properyItemType); + var obj = method.Invoke(this.MethodInfos, new object[] { exp, updateNavOptions }); + this.MethodInfos = obj; + return this; + } + public async Task ExecuteCommandAsync() + { + if (Context == null) return false; + var result = MethodInfos.GetType().GetMethod("ExecuteCommandAsync").Invoke(MethodInfos, new object[] { }); + return await (Task)result; + } + public bool ExecuteCommand() + { + if (Context == null) return false; + var result = MethodInfos.GetType().GetMethod("ExecuteCommand").Invoke(MethodInfos, new object[] { }); + return (bool)result; + } + } +} diff --git a/Src/Asp.Net/SqlSugar/Abstract/ExecuteNavProvider/DeleteNavTask.cs b/Src/Asp.Net/SqlSugar/Abstract/ExecuteNavProvider/DeleteNavTask.cs index 3d8d176a5..b117255eb 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/ExecuteNavProvider/DeleteNavTask.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/ExecuteNavProvider/DeleteNavTask.cs @@ -22,6 +22,20 @@ namespace SqlSugar result.Context = this.Context; return result; } + public DeleteNavMethodInfo IncludeByNameString(string navMemberName, UpdateNavOptions updateNavOptions = null) + { + DeleteNavMethodInfo result = new DeleteNavMethodInfo(); + result.Context = deleteNavProvider._Context; + var entityInfo = result.Context.EntityMaintenance.GetEntityInfo(); + Type properyItemType; + bool isList; + Expression exp = UtilMethods.GetIncludeExpression(navMemberName, entityInfo, out properyItemType, out isList); + var method = this.GetType().GetMyMethod("Include", 2, isList) + .MakeGenericMethod(properyItemType); + var obj = method.Invoke(this, new object[] { exp, updateNavOptions }); + result.MethodInfos = obj; + return result; + } public DeleteNavTask Include(Expression>> expression) where TChild : class, new() { this.Context = deleteNavProvider._Context; @@ -50,6 +64,18 @@ namespace SqlSugar result.Context = this.Context; return result; } + public DeleteNavTask ThenInclude(Expression> expression, DeleteNavOptions deleteNavOptions) where TChild : class, new() + { + DeleteNavTask result = new DeleteNavTask(); + Func> func = () => { + var dev = PreFunc(); + dev.deleteNavOptions = deleteNavOptions; + return dev.ThenInclude(expression); + }; + result.PreFunc = func; + result.Context = this.Context; + return result; + } public DeleteNavTask ThenInclude(Expression>> expression) where TChild : class, new() { DeleteNavTask result = new DeleteNavTask(); @@ -74,6 +100,10 @@ namespace SqlSugar { return AsNav().ThenInclude(expression); } + public DeleteNavTask Include(Expression> expression, DeleteNavOptions options) where TChild : class, new() + { + return AsNav().ThenInclude(expression,options); + } public DeleteNavTask Include(Expression>> expression) where TChild : class, new() { return AsNav().ThenInclude(expression); diff --git a/Src/Asp.Net/SqlSugar/SqlSugar.csproj b/Src/Asp.Net/SqlSugar/SqlSugar.csproj index aeb7198f6..bb13784db 100644 --- a/Src/Asp.Net/SqlSugar/SqlSugar.csproj +++ b/Src/Asp.Net/SqlSugar/SqlSugar.csproj @@ -85,6 +85,7 @@ +