我正在 Oracle 11g2 DB 创建类测试上学习 EF6
class Test
{
public int Id { get; set; }
public float T1 { get; set; }
public float T2 { get; set; }
public float T3 { get; set; }
public float T4 { get; set; }
public float T5 { get; set; }
public float T6 { get; set; }
public float T7 { get; set; }
public float T8 { get; set; }
public float T9 { get; set; }
}
然后上下文:
internal class TestContext : DbContext
{
public virtual DbSet<Test> Test { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
// modelBuilder.HasDefaultSchema("USER");
modelBuilder.Entity<Test>().ToTable("TESTI", "USER");
Database.SetInitializer<TestContext>(new
CreateDatabaseIfNotExists<TestContext>());
//Database.SetInitializer< TestContext > (null);
}
}
接下来,我将入口代码附加到按钮上:
private void button1_Click(object sender, EventArgs e)
{
using (var db = new TestContext())
{
var test = new Test {Id = 1, T1 = 12, T2 = 3, T3 = 3, T4 = 3, T5
= 3, T6 = 3, T7 = 3, T8 = 3 };
db.Test.Add(test);
db.SaveChanges();
}
}
按下按钮时,没有任何反应。然后我走另一条路,在代码中添加了 1 个 T9 字段,它没有注释,当我运行代码时,我收到一个需要迁移的错误,好吧,我继续在包管理器控制台中写几行启用迁移、添加迁移测试、更新数据库。我启动应用程序,按下按钮,数据库中又没有出现任何内容,没有表,没有列。好的,我想我会通过创建一个包含字段的表来手动创建一个表,我启动应用程序,我按下按钮,再次没有,所以问题是,我做错了什么?数据去哪儿了?为什么没有一个错误,没有一个异常?请知道或遇到类似现象的人帮忙。
错误是跳过了App.config中负责确定连接哪个数据库的行,即在TestContext类中,需要添加以下内容。线: