Program.cs 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. using Vitorm;
  2. namespace App
  3. {
  4. public class Program
  5. {
  6. static void Main(string[] args)
  7. {
  8. // #1 No need to init Vitorm.Data
  9. // #2 Create Table
  10. Data.TryDropTable<User>();
  11. Data.TryCreateTable<User>();
  12. // #3 Insert Records
  13. Data.Add(new User { id = 1, name = "lith" });
  14. Data.AddRange(new[] {
  15. new User { id = 2, name = "lith", fatherId = 1 },
  16. new User { id = 3, name = "lith", fatherId = 1 }
  17. });
  18. // #4 Query Records
  19. {
  20. var user = Data.Get<User>(1);
  21. var users = Data.Query<User>().Where(u => u.name.Contains("li")).ToList();
  22. var sql = Data.Query<User>().Where(u => u.name.Contains("li")).ToExecuteString();
  23. }
  24. // #5 Update Records
  25. Data.Update(new User { id = 1, name = "lith1" });
  26. Data.UpdateRange(new[] {
  27. new User { id = 2, name = "lith2", fatherId = 1 },
  28. new User { id = 3, name = "lith3", fatherId = 2 }
  29. });
  30. Data.Query<User>().Where(u => u.name.Contains("li"))
  31. .ExecuteUpdate(u => new User { name = "Lith" + u.id });
  32. // #6 Delete Records
  33. Data.Delete<User>(new User { id = 1, name = "lith1" });
  34. Data.DeleteRange(new[] {
  35. new User { id = 2, name = "lith2", fatherId = 1 },
  36. new User { id = 3, name = "lith3", fatherId = 2 }
  37. });
  38. Data.DeleteByKey<User>(1);
  39. Data.DeleteByKeys<User, int>(new[] { 1, 2 });
  40. Data.Query<User>().Where(u => u.name.Contains("li"))
  41. .ExecuteDelete();
  42. Data.Truncate<User>();
  43. // #7 Join Queries
  44. {
  45. var query =
  46. from user in Data.Query<User>()
  47. from father in Data.Query<User>().Where(father => user.fatherId == father.id).DefaultIfEmpty()
  48. where father != null
  49. orderby user.id
  50. select new { user, father };
  51. var sql = query.ToExecuteString();
  52. var users = query.ToList();
  53. }
  54. // #8 Transactions
  55. {
  56. using var dbContext = Data.DataProvider<User>().CreateSqlDbContext();
  57. using var tran1 = dbContext.BeginTransaction();
  58. dbContext.Update(new User { id = 4, name = "u4001" });
  59. using (var tran2 = dbContext.BeginTransaction())
  60. {
  61. dbContext.Update(new User { id = 4, name = "u4002" });
  62. // will rollback
  63. }
  64. using (var tran2 = dbContext.BeginTransaction())
  65. {
  66. dbContext.Update(new User { id = 4, name = "u4002" });
  67. tran2.Rollback();
  68. }
  69. using (var tran2 = dbContext.BeginTransaction())
  70. {
  71. dbContext.Update(new User { id = 4, name = "u4003" });
  72. tran2.Commit();
  73. }
  74. tran1.Commit();
  75. }
  76. // #9 Database Functions
  77. {
  78. // select * from User where IIF(t0.fatherId is not null, true, false);
  79. var query = Data.Query<User>().Where(u => DbFunction.Call<bool>("IIF", u.fatherId != null, true, false));
  80. var sql = query.ToExecuteString();
  81. var userList = query.ToList();
  82. }
  83. }
  84. // Entity Definition
  85. [System.ComponentModel.DataAnnotations.Schema.Table("User")]
  86. public class User
  87. {
  88. [System.ComponentModel.DataAnnotations.Key]
  89. public int id { get; set; }
  90. public string name { get; set; }
  91. public DateTime? birth { get; set; }
  92. public int? fatherId { get; set; }
  93. }
  94. }
  95. }