Est-ce que tu lances ton VS en mode admin ?
Version imprimable
Est-ce que tu lances ton VS en mode admin ?
Hallelujah!! :ptdr:
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:
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 packageCode:
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:
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:
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/