Advertisement
Guest User

Untitled

a guest
Aug 23rd, 2019
136
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.25 KB | None | 0 0
  1.  
  2. //il ne faut pas installer sqlite.net-pcl, SqliteNetExtensions suffit
  3. using SQLite;
  4. using SQLiteNetExtensions.Extensions;
  5. using SqliteExtension_universal_windows_.Models;
  6. using System;
  7. using System.Collections.Generic;
  8. using System.IO;
  9. using System.Linq;
  10. using System.Text;
  11. using System.Threading.Tasks;
  12.  
  13. namespace SqliteExtension_universal_windows_.DAL
  14. {
  15. //IDisposable est obligatoire pr utiliser les clauses "using"
  16. //utiliser using(var toto = new machin()) {} va faire en sorte que
  17. //la durée de vie de toto commence à "{" et finit à "}"
  18. //D'ailleurs la "}" va déclencher ds l'objet la méthode "Dispose"
  19. //Dans Dispose on peut ne rien mettre ou on peut déréférencer un objet interne
  20. //ou encore lancer une derniere operation(par ex: sauvegarde)
  21. public class RepoPersonne : IDisposable
  22. {
  23.  
  24. //Le path part du répertoire d'installation de cette application (tj sle mm repertoire de base)
  25. //le repertoire d'installation de l'application est cree automatiquement apres download sur le store
  26. string path = Path.Combine(Windows.Storage.ApplicationData.Current.LocalFolder.Path, "TestAvecRelation.db3");
  27. SQLiteConnection con;
  28.  
  29. public RepoPersonne()
  30. {
  31. //Création de la DB si elle n'existe pas
  32. //rnevoie une connection active (sqlite n'est qu'un fichier texte organisé)
  33. con = new SQLiteConnection(path);
  34. Initialize();
  35. }
  36.  
  37. public void Initialize()
  38. {
  39. //pr voir si la table existe, il va regarder s'il y a des colonnes
  40. //plutot que d'écrire le nom de la table en string (pr éviter les fautes ortho ou si la table change de nom par apres), on demande le nom du type de la class
  41. var info = con.GetTableInfo(typeof(Genre).Name);
  42. //si la table n'existe pas
  43. if(info.Count == 0)
  44. {
  45. //création de la table d'apres ses parametres
  46. con.CreateTable<Genre>();
  47.  
  48. Genre g1 = new Genre { Civilite = "Mr" };
  49. Genre g2 = new Genre { Civilite = "Mme" };
  50. Genre g3 = new Genre { Civilite = "XXX" };
  51.  
  52. //on met dans la DB
  53. con.InsertAll(new List<Genre> { g1, g2, g3 });
  54.  
  55. }
  56. //si la table existe déjà, il ne fait rien
  57. con.CreateTable<Personne>();
  58. }
  59.  
  60. public List<Personne> GetAllPersonnes()
  61. {
  62. //pr avoir les personnes avec les genres complétés
  63. // => charge les objets liés par lazyloading
  64. return con.GetAllWithChildren<Personne>();
  65. }
  66.  
  67. public List<Genre> GetAllGenres()
  68. {
  69. //ne charge que la table et ne complete pas la liste de personnes
  70. return con.Table<Genre>().ToList();
  71. }
  72.  
  73. public Personne Insert(Personne p)
  74. {
  75. #region --Methode avec les extensions --
  76. con.InsertWithChildren(p);
  77. #endregion
  78.  
  79. ////j'insère d'abord la personne
  80. //con.Insert(p);
  81. ////je vais chercher le genre par la clef étrangère
  82. //p.Genre = con.Table<Genre>().FirstOrDefault(g => g.GenreId == p.GenreId);
  83. ////faire l'update complet
  84. //con.UpdateWithChildren(p);
  85. //retourner l'objet complet
  86. return p;
  87.  
  88. }
  89.  
  90. public int Update(Personne p)
  91. {
  92. //Je vais chercher la personne correspondante en DB
  93. //je peux mettre Personne temp a la place de var temp
  94. var temp = con.Table<Personne>().FirstOrDefault(pe => pe.PersonneId == p.PersonneId);
  95. if (temp != null)
  96. {
  97. temp.Nom = p.Nom;
  98. temp.Prenom = p.Prenom;
  99. temp.Genre = p.Genre;
  100. //On va updater en prenant en compte l'objet genre sans meme donner le genreId
  101. con.UpdateWithChildren(temp);
  102. return 1;
  103. }
  104. return 0;
  105. }
  106.  
  107. public int Delete(int id)
  108. {
  109. return con.Delete<Personne>(id);
  110. }
  111.  
  112. public void Dispose()
  113. {
  114. con = null;
  115. }
  116. }
  117. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement