entity framework7和SQLite表没有创建

我已经尝试了一段时间来弄清楚如何使用单个DBContext以Code First方式创建多个表而没有任何运气。 我确信这只是我对框架的不熟悉,但我不确定我缺少什么。 这是一个使用实体和DBContext的简单示例。

[Table("MyEntity")] public class MyEntity { [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] public Guid Id { get; set; } public string MyColumn { get; set; } public int MyNumber { get; set; } } [Table("MySecondEntity")] public class MySecondEntity { [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] public Guid Id { get; set; } public string MyColumn { get; set; } public int MyNumber { get; set; } } public class MyContext : DbContext { public DbSet MyTable { get; set; } public DbSet MyTable2 { get; set; } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { var connectionStringBuilder = new SqliteConnectionStringBuilder {DataSource = "test.db"}; var connectionString = connectionStringBuilder.ToString(); var connection = new SqliteConnection(connectionString); optionsBuilder.UseSqlite(connection); } } 

它看起来像它应该工作,但是当我在下面的代码中调用它时,它会在第一个foreach循环中出现’没有这样的表:MyEntity’的Sqliteexception。

 static void Main(string[] args) { using (var db = new MyContext()) { MyEntity testEntity1 = new MyEntity(); MySecondEntity entity1 = new MySecondEntity(); testEntity1.MyColumn = "Test Data 1"; testEntity1.MyNumber = 12345; db.MyTable.Add(testEntity1); db.Database.Migrate(); entity1.MyColumn = "New Data 1"; entity1.MyNumber = 2; db.MyTable2.Add(entity1); db.Database.Migrate(); Console.WriteLine("Inserting Data..."); Console.WriteLine("Data in the Database"); foreach (var entity in db.MyTable) { Console.WriteLine("Id: " + entity.Id); Console.WriteLine("Column Data: " + entity.MyColumn); Console.WriteLine("Number: " + entity.MyNumber); } foreach (var entity in db.MyTable2) { Console.WriteLine("Id: " + entity.Id); Console.WriteLine("Column Data: " + entity.MyColumn); Console.WriteLine("Number: " + entity.MyNumber); } } Console.WriteLine("Examples run finished,press Enter to continue..."); Console.ReadLine(); } 

我几乎可以保证这是一个简单的我缺少但我似乎无法找到它,并且我没有在他们的文档中找到任何示例。 似乎在GitHub上提交了类似的问题https://github.com/aspnet/EntityFramework/issues/2874但这适用于多个上下文。 那么也许这是另一件尚未完全释放的作品呢?

按照http://nate.readthedocs.org/en/latest/getting-started/uwp.html上发布的教程,按照@natemcmaster的建议和@ lukas-kabrt推荐的解决方案,我能够将它作为期望。 通过运行以下命令,我能够创建表并从中插入/选择数据。

 Install-Package EntityFramework.Commands –Pre Add-Migration MyFirstMigration Update-Database 

DbContext类包含数据库的配置 – 表,关系等。要使用DbContext您需要创建一个与DbContext匹配的数据库。 在Code-first世界中,它是由数据库迁移完成的。

对于ASP.NET 5,您需要将此配置添加到project.json文件中

 "commands": { "ef": "EntityFramework.Commands" } 

然后将迁移添加到项目中,并通过运行以下命令将此迁移应用于DB

 dnx ef migrations add MyFirstMigration dnx ef database update 

对于完整.NET,您需要在程序包管理器控制台中运行以下命令(工具‣NuGet程序包管理器‣程序包管理器控制台)

 Install-Package EntityFramework.Commands –Pre Add-Migration MyFirstMigration Update-Database 

在官方文档中查看UWP入门 – EF 7 。 以下注释来自该文件。

UWP上的默认路径不可写。 您的DB文件需要位于ApplicationData.Current.LocalFolder

 options.UseSqlite("Data Source=" + Path.Combine(ApplicationData.Current.LocalFolder.Path, "blogging.db")) 

另请注意,在UWP上,您无法从命令运行迁移。 您需要在应用程序中运行它们。

  using (var db = new BloggingContext()) { db.Database.Migrate(); }