Bonjour,
après plusieurs test et plusieurs recherches infructueuse sur le net je ne parviens toujours pas à créer un base de donnée SQLite avec EntityFramework
Pour le test je veux juste créer une base de donnée avec une table ("Revenue") contenant elle même 2 colonne : id et une colonne de type Int "Somme"
pour la classe Revenue j'ai procédé ainsi :
Voilà le context :
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 using System.Threading.Tasks; using System.Data; using System.Data.SQLite; using System.Data.SQLite.EF6; using System.Data.SQLite.Linq; using System.ComponentModel.DataAnnotations; namespace ClassesEtatFinance { [Table("SOMME")] public class Revenue { [Key] [DatabaseGenerated(System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption.Identity)] public int Id { get; set; } [Required] public int Somme { get; set; } } }
voilà le contextInitializer :
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Data.SQLite; using System.Data.Entity; using ClassesEtatFinance; using System.Data.Entity.ModelConfiguration.Conventions; using DaoEtatFinance.Configuration; namespace DaoEtatFinance.Configuration { public class SqliteContext : DbContext { private string _dbPath; private SQLiteFactory sqliteFactory; private SQLiteConnection sqliteConnection; public SqliteContext() : base(new SQLiteConnection { ConnectionString = new SQLiteConnectionStringBuilder { DataSource = "name=TestBaseSqLite", ForeignKeys = true, BinaryGUID = false, }.ConnectionString }, true) { _dbPath = "name=TestBaseSqLite"; } public DbSet<Revenue> Revenue { get; set; } protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Conventions.Remove<PluralizingTableNameConvention>(); Database.Initialize(true); //Database.SetInitializer(new SqliteContextInitializer<SqliteContext>(_dbPath, modelBuilder)); } } }
et enfin pour la création de la base :
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 using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations.Schema; using System.Data.Entity; using System.Linq; using System.Reflection; using System.ComponentModel.DataAnnotations; using System.Diagnostics; using System.IO; using System.Collections; using System.Data.Entity.Core.Metadata.Edm; using System.Data.Entity.Infrastructure; using System.Data.Entity.Infrastructure.Annotations; namespace DaoEtatFinance.Configuration { class SqliteContextInitializer : DropCreateDatabaseIfModelChanges<SqliteContext> { }
Je me suis inspiré de cette explication-ci : https://gist.github.com/flaub/1968486e1b3f2b9fd
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 System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using DaoEtatFinance.Configuration; using System.Data.Entity; using System.Data.SQLite; namespace CreateSqLiteBaseConsole { class Program { static void Main(string[] args) { using( var context = new SqliteContext() ) { context.Database.Initialize(false) ; } } } }
Mon problème c'est qu'au lancement j'ai une erreur m'indiquant que je n'ai pas mis en place de SqLiteFatory je ne sais pas où le mettre) et quand je le met en place dans le context ça marche : il me crée un base SQLEXPRESS ! Mais moi je veux qu'il me créer un base SQLITE !
Je sais que je ne m'y prend pas comme il faut...
Est-ce que créer un base SqlLite avec entity est possible réellement ? et si oui si quelqu'un l'a déjà fait je suis tout ouïe pour la solution
Merci par avance de m'avoir lu![]()
Partager