Program.cs 3.8 KB

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