diff --git a/Src/Asp.NetCore2/SqlSugar/Abstract/DynamicBuilder/CommonMethodInfo.cs b/Src/Asp.NetCore2/SqlSugar/Abstract/DynamicBuilder/CommonMethodInfo.cs index de48a800c..87c38d528 100644 --- a/Src/Asp.NetCore2/SqlSugar/Abstract/DynamicBuilder/CommonMethodInfo.cs +++ b/Src/Asp.NetCore2/SqlSugar/Abstract/DynamicBuilder/CommonMethodInfo.cs @@ -8,7 +8,53 @@ namespace SqlSugar { public class CommonMethodInfo { - internal object Context { get; set; } + internal object Context { get; set; } + + public int ExecuteReturnIdentity() + { + if (Context == null) return 0; + var result = Context.GetType().GetMyMethod("ExecuteReturnIdentity", 0).Invoke(Context, new object[] { }); + return (int)result; + } + public async Task ExecuteReturnIdentityAsync() + { + if (Context == null) return 0; + var result = Context.GetType().GetMyMethod("ExecuteReturnIdentityAsync", 0).Invoke(Context, new object[] { }); + return await (Task)result; + } + public int ExecuteCommand() + { + if (Context == null) return 0; + var result = Context.GetType().GetMyMethod("ExecuteCommand", 0).Invoke(Context, new object[] { }); + return (int)result; + } + public async Task ExecuteCommandAsync() + { + if (Context == null) return 0; + var result = Context.GetType().GetMyMethod("ExecuteCommandAsync", 0).Invoke(Context, new object[] { }); + return await (Task)result; + } + } + public class SplitMethodInfo + { + internal object Context { get; set; } + + public int ExecuteCommand() + { + if (Context == null) return 0; + var result = Context.GetType().GetMyMethod("ExecuteCommand", 0).Invoke(Context, new object[] { }); + return (int)result; + } + public async Task ExecuteCommandAsync() + { + if (Context == null) return 0; + var result = Context.GetType().GetMyMethod("ExecuteCommandAsync", 0).Invoke(Context, new object[] { }); + return await (Task)result; + } + } + public class UpdateCommonMethodInfo + { + internal object Context { get; set; } public int ExecuteCommand() { diff --git a/Src/Asp.NetCore2/SqlSugar/Abstract/InsertableProvider/InsertMethodInfo.cs b/Src/Asp.NetCore2/SqlSugar/Abstract/InsertableProvider/InsertMethodInfo.cs index 597bcda83..df241642f 100644 --- a/Src/Asp.NetCore2/SqlSugar/Abstract/InsertableProvider/InsertMethodInfo.cs +++ b/Src/Asp.NetCore2/SqlSugar/Abstract/InsertableProvider/InsertMethodInfo.cs @@ -11,7 +11,7 @@ namespace SqlSugar { internal SqlSugarProvider Context { get; set; } internal MethodInfo MethodInfo { get; set; } - internal object objectValue { get; set; } + internal object objectValue { get; set; } public int ExecuteCommand() { @@ -41,12 +41,24 @@ namespace SqlSugar var result = inertable.GetType().GetMyMethod("ExecuteReturnIdentityAsync",0).Invoke(inertable, new object[] { }); return await (Task)result; } - public CommonMethodInfo SplitTable() + + public CommonMethodInfo IgnoreColumns(params string [] ignoreColumns) + { + var inertable = MethodInfo.Invoke(Context, new object[] { objectValue }); + var newMethod = inertable.GetType().GetMyMethod("IgnoreColumns", 1, typeof(string[])); + var result = newMethod.Invoke(inertable, new object[] { ignoreColumns }); + return new CommonMethodInfo() + { + Context = result + }; + } + + public SplitMethodInfo SplitTable() { var inertable = MethodInfo.Invoke(Context, new object[] { objectValue }); var newMethod = inertable.GetType().GetMyMethod("SplitTable", 0); var result = newMethod.Invoke(inertable, new object[] { }); - return new CommonMethodInfo() + return new SplitMethodInfo() { Context = result }; diff --git a/Src/Asp.NetCore2/SqlSugar/Abstract/UpdateProvider/UpdateMethodInfo.cs b/Src/Asp.NetCore2/SqlSugar/Abstract/UpdateProvider/UpdateMethodInfo.cs index dd6a70b2d..d64fc08e3 100644 --- a/Src/Asp.NetCore2/SqlSugar/Abstract/UpdateProvider/UpdateMethodInfo.cs +++ b/Src/Asp.NetCore2/SqlSugar/Abstract/UpdateProvider/UpdateMethodInfo.cs @@ -28,13 +28,22 @@ namespace SqlSugar var result = inertable.GetType().GetMyMethod("ExecuteCommandAsync",0).Invoke(inertable, new object[] { }); return await (Task)result; } - - public CommonMethodInfo SplitTable() + public UpdateCommonMethodInfo IgnoreColumns(params string[] ignoreColumns) + { + var inertable = MethodInfo.Invoke(Context, new object[] { objectValue }); + var newMethod = inertable.GetType().GetMyMethod("IgnoreColumns", 1,typeof(string[])); + var result = newMethod.Invoke(inertable, new object[] { ignoreColumns }); + return new UpdateCommonMethodInfo() + { + Context = result + }; + } + public UpdateCommonMethodInfo SplitTable() { var inertable = MethodInfo.Invoke(Context, new object[] { objectValue }); var newMethod = inertable.GetType().GetMyMethod("SplitTable", 0); var result = newMethod.Invoke(inertable, new object[] { }); - return new CommonMethodInfo() + return new UpdateCommonMethodInfo() { Context = result }; diff --git a/Src/Asp.NetCore2/SqlSugar/Utilities/CommonExtensions.cs b/Src/Asp.NetCore2/SqlSugar/Utilities/CommonExtensions.cs index 61c5b8c6b..4ffde70b3 100644 --- a/Src/Asp.NetCore2/SqlSugar/Utilities/CommonExtensions.cs +++ b/Src/Asp.NetCore2/SqlSugar/Utilities/CommonExtensions.cs @@ -25,6 +25,13 @@ namespace SqlSugar { return type.GetMethods().FirstOrDefault(it => it.Name == name && it.GetParameters().Length == argCount); } + public static MethodInfo GetMyMethod(this Type type, string name, int argCount,Type parameterType) + { + return type.GetMethods().FirstOrDefault(it => + it.Name == name && + it.GetParameters().Length == argCount&& + it.GetParameters().First().ParameterType==parameterType); + } public static List ToList(this T thisValue,Func action) where T:class,new() { return new List { thisValue };