Est-ce que tu lances ton VS en mode admin ?
Est-ce que tu lances ton VS en mode admin ?
Less Is More
Pensez à utiliser les boutons , et les balises code
Desole pour l'absence d'accents, clavier US oblige
Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.
Hallelujah!!
Après une belle traversée à la rame, j'ai enfin trouvé!!!
Merci à DotNetMatt pour son aide et sa patience....
1. Créer un nouveau projet > UWP (dans mons cas sous Visual Studio 2017 v15.3.5)
2. Install-Package Microsoft.EntityFrameworkCore.Sqlite -Version 1.1.1
3. Install-Package Microsoft.EntityFrameworkCore.Tools -Version 1.1.1
4. Vérifier que Microsoft.NETCore.UniversalWindowsPlatform est bien en version v5.4.0
5. Inclure le package: SQLite.Net-PCL
6. Inclure le package System.Data.SQLite
7. Créer sa classe MyEntity.cs ATTENTION la classe doit être publique! Exemple:
8. Inclure using SQLite.Net.Attributes; si on utilise les attributs.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 using SQLite.Net.Attributes; namespace UWPSQLITEEF0920 { [Table("MyTable")] public class MyEntity { [PrimaryKey, AutoIncrement] public int id { get; set; } public string MyColumn { get; set; } public string YourColumn { get; set; } public MyEntity() { } } }
9. Créer sa classe MyContext (publique aussi). C'est la définition du contexte de la base de données.Exemple:
10. Les modèles ayant été créés, on peu maintenant créer la base de données. Ouvrir la Console du Gestionnaire de package : Outils / Gestionnaire de package NuGet / Console du Gestionnaire de package
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 using Microsoft.Data.Sqlite; using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace UWPSQLITEEF0920 { public class MyContext : DbContext { // This property defines the table public DbSet<MyEntity> MyTable { get; set; } // This method connects the context with the database protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { var connectionStringBuilder = new SqliteConnectionStringBuilder { DataSource = "uwpTest.sqlite" }; var connectionString = connectionStringBuilder.ToString(); var connection = new SqliteConnection(connectionString); optionsBuilder.UseSqlite(connection); } } }
11. On va utiliser la migration: ADD-MIGRATION MyFirstMigration (choisir un nom par migration).
IL semblerait que la présence d'un accent dans le path de la base de données empêche la migration (j'ai changé de répertoire pour mon projet et c'est OK, dans mon cas c'était le répertoire "user/stéphane" qui avait une accent)
12. A partir de là la base est créée, et on peu coder les fichiers App.xaml et App.xaml.cs (vos controllers + vos vues)afin d'exploiter les données en sortie.
Rajouter dans App.Xaml.cs:
Pour modifier sa Base de donnée à la volée:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 public App() { this.InitializeComponent(); this.Suspending += OnSuspending; //Code à rajouter using (var db = new MyContext()) { db.Database.Migrate(); } }
1. par exemple rajouter un champ dans la table:
2. On refait une ADD-MIGRATION MySecondMigration et le tour est joué!!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 ... public string OtherColumn { get; set; } ...
3. idem pour rajouter une table (nouvelle classe)
A chaque modification du modèle on doit exécuter ADD-MIGRATION NewNameOfMigration!!!
SQLite est assez puissant pour une base de données embarquée par exemple, mais il existe certaines limitations (par exemple impossible de renommer une colonne!!)
https://docs.microsoft.com/en-us/ef/...te/limitations
Voilou...
A Noter pour ceux que ça intéresse, la base se trouve à cet endroit sur le PC:
C:\Users\evonz\AppData\Local\Packages\071696d0-63be-4978-986a-ec7276d3fd4a_h8wydme0da398\LocalState
Vous pouvez l'ouvrir et la modifier avec le Gestionnaire SQLite de Firefox.
Pour aller un peu plus loin...
http://www.michael-whelan.net/ef-cor...rate-assembly/
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager