DeleteablePage.cs 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. namespace SqlSugar
  7. {
  8. public class DeleteablePage<T> where T:class,new()
  9. {
  10. public T[] DataList { get; set; }
  11. public ISqlSugarClient Context { get; set; }
  12. public int PageSize { get; internal set; }
  13. public string TableName { get; internal set; }
  14. public bool IsEnableDiffLogEvent { get; internal set; }
  15. public DiffLogModel DiffModel { get; internal set; }
  16. public List<string> UpdateColumns { get; internal set; }
  17. public int ExecuteCommand()
  18. {
  19. if (DataList.Count() == 1 && DataList.First() == null)
  20. {
  21. return 0;
  22. }
  23. if (PageSize == 0) { PageSize = 1000; }
  24. var result = 0;
  25. var isNoTran = this.Context.Ado.IsNoTran();
  26. try
  27. {
  28. if (isNoTran)
  29. {
  30. this.Context.Ado.BeginTran();
  31. }
  32. this.Context.Utilities.PageEach(DataList, PageSize, pageItem =>
  33. {
  34. result += this.Context.Deleteable(pageItem).AS(TableName).EnableDiffLogEventIF(IsEnableDiffLogEvent, DiffModel).ExecuteCommand();
  35. });
  36. if (isNoTran)
  37. {
  38. this.Context.Ado.CommitTran();
  39. }
  40. }
  41. catch (Exception)
  42. {
  43. if (isNoTran)
  44. {
  45. this.Context.Ado.RollbackTran();
  46. }
  47. throw;
  48. }
  49. return result;
  50. }
  51. public async Task<int> ExecuteCommandAsync()
  52. {
  53. if (DataList.Count() == 1 && DataList.First() == null)
  54. {
  55. return 0;
  56. }
  57. if (PageSize == 0) { PageSize = 1000; }
  58. var result = 0;
  59. var isNoTran = this.Context.Ado.IsNoTran();
  60. try
  61. {
  62. if (isNoTran)
  63. {
  64. await this.Context.Ado.BeginTranAsync();
  65. }
  66. await this.Context.Utilities.PageEachAsync(DataList, PageSize, async pageItem =>
  67. {
  68. result += await this.Context.Deleteable(pageItem).AS(TableName).EnableDiffLogEventIF(IsEnableDiffLogEvent, DiffModel).ExecuteCommandAsync();
  69. });
  70. if (isNoTran)
  71. {
  72. await this.Context.Ado.CommitTranAsync();
  73. }
  74. }
  75. catch (Exception)
  76. {
  77. if (isNoTran)
  78. {
  79. await this.Context.Ado.RollbackTranAsync();
  80. }
  81. throw;
  82. }
  83. return result;
  84. }
  85. }
  86. }