c# – Entity Framework 7和SQLite Tables没有创建
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – Entity Framework 7和SQLite Tables没有创建,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3135字,纯文字阅读大概需要5分钟。
内容图文
![c# – Entity Framework 7和SQLite Tables没有创建](/upload/InfoBanner/zyjiaocheng/909/17106334855e41818ea8dbd299c523c3.jpg)
我已经尝试了一段时间来弄清楚如何使用单个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<MyEntity> MyTable { get; set; }
public DbSet<MySecondEntity> 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’的Sqlite异常.
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();
}
我几乎可以保证它是一个简单的我缺少但我似乎无法找到它,并且我没有在他们的文档中找到任何示例.似乎在这里https://github.com/aspnet/EntityFramework/issues/2874上在GitHub上提交了类似的问题,但这是针对多个上下文的.那么也许这是另一件尚未完全释放的作品呢?
解
按照@natemcmaster建议的http://ef.readthedocs.org/en/latest/getting-started/uwp.html发布的教程和@ 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
对于Full .NET,您需要在程序包管理器控制台中运行以下命令(工具?NuGet程序包管理器?程序包管理器控制台)
Install-Package EntityFramework.Commands –Pre
Add-Migration MyFirstMigration
Update-Database
内容总结
以上是互联网集市为您收集整理的c# – Entity Framework 7和SQLite Tables没有创建全部内容,希望文章能够帮你解决c# – Entity Framework 7和SQLite Tables没有创建所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。