使用Entity Framework创建SQLite数据库

我正在尝试创建我的第一个数据库。 我看到使用现有数据库和配置文件完成创建的无数post。 我想要实现的是,从代码创建数据库,并在代码后面进行初始化,没有配置文件。

我的MyContext类中有以下内容:

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

假设每当我创建MyContext的实例时,如果不存在,我应该创建一个数据库。 但是没有文件被创建。

初始化完成如下:

 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))); } } 

我正在使用NuGet的SQLite和EF6的最新版本。

认为你告诉它使用你的DatabaseConfiguration ,但你不是。 简单地在构造函数中声明局部变量不会告诉上下文使用该配置。 您可以使用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(); } } 

据我所知,Entity Framework不支持为SQLite创建数据库+表。 您可以通过外部工具创建数据库模板,然后按照本文中的建议运行手动迁移,以创建或更新数据库模式。