Program.cs 4.1 KB

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