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但这适用于多个上下文。 那么也许这是另一件尚未完全释放的作品呢?
解
按照https://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上,您无法从命令运行迁移。 您需要在应用程序中运行它们。
上述就是C#学习教程:entity framework7和SQLite表没有创建分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
using (var db = new BloggingContext()) { db.Database.Migrate(); }
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/954391.html