Transaction_Test.cs 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. using Microsoft.VisualStudio.TestTools.UnitTesting;
  2. namespace Vitorm.MsTest.CommonTest
  3. {
  4. [TestClass]
  5. public class Transaction_Test
  6. {
  7. [TestMethod]
  8. public void Test_Transaction()
  9. {
  10. #region Transaction
  11. {
  12. using var dbContext = DataSource.CreateDbContext();
  13. var userSet = dbContext.DbSet<User>();
  14. Assert.AreEqual("u400", userSet.Get(4).name);
  15. dbContext.Update(new User { id = 4, name = "u4001" });
  16. Assert.AreEqual("u4001", userSet.Get(4).name);
  17. using (var tran = dbContext.BeginTransaction())
  18. {
  19. dbContext.Update(new User { id = 4, name = "u4002" });
  20. Assert.AreEqual("u4002", userSet.Get(4).name);
  21. }
  22. Assert.AreEqual("u4001", userSet.Get(4).name);
  23. using (var tran = dbContext.BeginTransaction())
  24. {
  25. dbContext.Update(new User { id = 4, name = "u4002" });
  26. Assert.AreEqual("u4002", userSet.Get(4).name);
  27. tran.Rollback();
  28. }
  29. Assert.AreEqual("u4001", userSet.Get(4).name);
  30. using (var tran = dbContext.BeginTransaction())
  31. {
  32. dbContext.Update(new User { id = 4, name = "u4003" });
  33. Assert.AreEqual("u4003", userSet.Get(4).name);
  34. tran.Commit();
  35. }
  36. Assert.AreEqual("u4003", userSet.Get(4).name);
  37. }
  38. #endregion
  39. }
  40. // can not test for db is not durable
  41. //[TestMethod]
  42. public void Test_Dispose()
  43. {
  44. {
  45. using var dbContext = DataSource.CreateDbContext();
  46. var userSet = dbContext.DbSet<User>();
  47. var tran2 = dbContext.BeginTransaction();
  48. {
  49. dbContext.Update(new User { id = 4, name = "u4002" });
  50. Assert.AreEqual("u4002", userSet.Get(4).name);
  51. tran2.Commit();
  52. }
  53. Assert.AreEqual("u4002", userSet.Get(4).name);
  54. var tran3 = dbContext.BeginTransaction();
  55. {
  56. dbContext.Update(new User { id = 4, name = "u4003" });
  57. Assert.AreEqual("u4003", userSet.Get(4).name);
  58. }
  59. Assert.AreEqual("u4003", userSet.Get(4).name);
  60. }
  61. {
  62. using var dbContext = DataSource.CreateDbContext();
  63. var userSet = dbContext.DbSet<User>();
  64. //Assert.AreEqual("u4002", userSet.Get(4).name);
  65. }
  66. }
  67. [TestMethod]
  68. public void Test_NestedTransaction()
  69. {
  70. #region NestedTransaction
  71. {
  72. using var dbContext = DataSource.CreateDbContext();
  73. var userSet = dbContext.DbSet<User>();
  74. Assert.AreEqual("u400", userSet.Get(4).name);
  75. using (var tran1 = dbContext.BeginTransaction())
  76. {
  77. dbContext.Update(new User { id = 4, name = "u4001" });
  78. Assert.AreEqual("u4001", userSet.Get(4).name);
  79. using (var tran2 = dbContext.BeginTransaction())
  80. {
  81. dbContext.Update(new User { id = 4, name = "u4002" });
  82. Assert.AreEqual("u4002", userSet.Get(4).name);
  83. }
  84. Assert.AreEqual("u4001", userSet.Get(4).name);
  85. using (var tran2 = dbContext.BeginTransaction())
  86. {
  87. dbContext.Update(new User { id = 4, name = "u4002" });
  88. Assert.AreEqual("u4002", userSet.Get(4).name);
  89. tran2.Rollback();
  90. }
  91. Assert.AreEqual("u4001", userSet.Get(4).name);
  92. using (var tran2 = dbContext.BeginTransaction())
  93. {
  94. dbContext.Update(new User { id = 4, name = "u4003" });
  95. Assert.AreEqual("u4003", userSet.Get(4).name);
  96. tran2.Commit();
  97. }
  98. Assert.AreEqual("u4003", userSet.Get(4).name);
  99. }
  100. Assert.AreEqual("u400", userSet.Get(4).name);
  101. }
  102. #endregion
  103. }
  104. }
  105. }