Crear base de datos SQLite utilizando Entity Framework

Estoy tratando de crear mi primera base de datos. Veo innumerables publicaciones sobre la creación que se realizan utilizando la base de datos existente y un archivo de configuración. Sin embargo, lo que estoy tratando de lograr es crear una base de datos a partir del código y también hacer la inicialización dentro del código detrás, sin un archivo de configuración.

Tengo lo siguiente dentro de mi clase MyContext:

public MyContext() : base("MyDB") { DatabaseConfiguration _DBConfig = new DatabaseConfiguration(); } public DbSet MyObject { get; set; } protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Conventions .Remove(); } 

Suponiendo que siempre que cree una instancia de MyContext, debería obtener una base de datos creada si no existe. Pero no se crea ningún archivo.

La inicialización se realiza de la siguiente manera:

 class DatabaseConfiguration : DbConfiguration { public DatabaseConfiguration() { SetProviderFactory("System.Data.SQLite", SQLiteFactory.Instance); SetProviderFactory("System.Data.SQLite.EF6", SQLiteProviderFactory.Instance); SetProviderServices("System.Data.SQLite", (DbProviderServices)SQLiteProviderFactory.Instance.GetService(typeof(DbProviderServices))); } } 

Estoy usando las versiones más recientes de SQLite y EF6 de NuGet.

Crees que le estás diciendo que use tu DatabaseConfiguration , pero no lo estás haciendo. Simplemente declarar una variable local en su constructor no le dice al contexto que use esa configuración. Puedes indicarlo con el atributo DbConfigurationType .

 [DbConfigurationType(typeof(DatabaseConfiguration))] public class MyContext : DbContext { public MyContext() : base("MyDB") { } public DbSet MyObject { get; set; } protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Conventions.Remove(); } } 

Por lo que sé, Entity Framework no admite la creación de tablas + bases de datos para SQLite. Puede crear una plantilla de base de datos mediante una herramienta externa y luego ejecutar migraciones manuales como se sugiere en esta publicación para crear o actualizar el esquema de la base de datos.