InsertMethodInfo.cs 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using System.Reflection;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. namespace SqlSugar
  8. {
  9. public class InsertMethodInfo
  10. {
  11. internal SqlSugarProvider Context { get; set; }
  12. internal MethodInfo MethodInfo { get; set; }
  13. internal object objectValue { get; set; }
  14. internal int pageSize { get; set; }
  15. public int ExecuteCommand()
  16. {
  17. if (Context == null) return 0;
  18. var inertable = MethodInfo.Invoke(Context, new object[] { objectValue });
  19. inertable = GetPageInsertable(inertable);
  20. var result = inertable.GetType().GetMethod("ExecuteCommand").Invoke(inertable, new object[] { });
  21. return (int)result;
  22. }
  23. public InsertMethodInfo PageSize(int pageSize)
  24. {
  25. this.pageSize= pageSize;
  26. return this;
  27. }
  28. public async Task<int> ExecuteCommandAsync()
  29. {
  30. if (Context == null) return 0;
  31. var inertable = MethodInfo.Invoke(Context, new object[] { objectValue });
  32. inertable = GetPageInsertable(inertable);
  33. var result = inertable.GetType().GetMyMethod("ExecuteCommandAsync",0).Invoke(inertable, new object[] { });
  34. return await (Task<int>)result;
  35. }
  36. public int ExecuteReturnIdentity()
  37. {
  38. if (Context == null) return 0;
  39. var inertable = MethodInfo.Invoke(Context, new object[] { objectValue });
  40. var result = inertable.GetType().GetMethod("ExecuteReturnIdentity").Invoke(inertable, new object[] { });
  41. return (int)result;
  42. }
  43. public async Task<int> ExecuteReturnIdentityAsync()
  44. {
  45. if (Context == null) return 0;
  46. var inertable = MethodInfo.Invoke(Context, new object[] { objectValue });
  47. var result = inertable.GetType().GetMyMethod("ExecuteReturnIdentityAsync",0).Invoke(inertable, new object[] { });
  48. return await (Task<int>)result;
  49. }
  50. public CommonMethodInfo AS(string tableName)
  51. {
  52. var inertable = MethodInfo.Invoke(Context, new object[] { objectValue });
  53. var newMethod = inertable.GetType().GetMyMethod("AS", 1,typeof(string));
  54. var result = newMethod.Invoke(inertable, new object[] { tableName });
  55. return new CommonMethodInfo()
  56. {
  57. Context = result
  58. };
  59. }
  60. public CommonMethodInfo IgnoreColumns(params string [] ignoreColumns)
  61. {
  62. var inertable = MethodInfo.Invoke(Context, new object[] { objectValue });
  63. var newMethod = inertable.GetType().GetMyMethod("IgnoreColumns", 1, typeof(string[]));
  64. var result = newMethod.Invoke(inertable, new object[] { ignoreColumns });
  65. return new CommonMethodInfo()
  66. {
  67. Context = result
  68. };
  69. }
  70. public CommonMethodInfo IgnoreColumns(bool ignoreNullColumn)
  71. {
  72. var inertable = MethodInfo.Invoke(Context, new object[] { objectValue });
  73. var newMethod = inertable.GetType().GetMyMethod("IgnoreColumns", 2, typeof(bool),typeof(bool));
  74. var result = newMethod.Invoke(inertable, new object[] { ignoreNullColumn, true });
  75. return new CommonMethodInfo()
  76. {
  77. Context = result
  78. };
  79. }
  80. public SplitMethodInfo SplitTable()
  81. {
  82. var inertable = MethodInfo.Invoke(Context, new object[] { objectValue });
  83. var newMethod = inertable.GetType().GetMyMethod("SplitTable", 0);
  84. var result = newMethod.Invoke(inertable, new object[] { });
  85. return new SplitMethodInfo()
  86. {
  87. Context = result
  88. };
  89. }
  90. public long ExecuteReturnSnowflakeId()
  91. {
  92. if (Context == null) return 0;
  93. var inertable = MethodInfo.Invoke(Context, new object[] { objectValue });
  94. var result = inertable.GetType().GetMethod("ExecuteReturnSnowflakeId").Invoke(inertable, new object[] { });
  95. return (long)result;
  96. }
  97. public async Task<long> ExecuteReturnSnowflakeIdAsync()
  98. {
  99. if (Context == null) return 0;
  100. var inertable = MethodInfo.Invoke(Context, new object[] { objectValue });
  101. var result = inertable.GetType().GetMyMethod("ExecuteReturnSnowflakeIdAsync", 0).Invoke(inertable, new object[] { });
  102. return await (Task<long>)result;
  103. }
  104. private object GetPageInsertable(object inertable)
  105. {
  106. if (pageSize > 0)
  107. {
  108. inertable = inertable.GetType().GetMethod("PageSize").Invoke(inertable, new object[] { pageSize });
  109. }
  110. return inertable;
  111. }
  112. }
  113. }