我正在使用下面列出的Entity Framework 7版本
"EntityFramework.Core": "7.0.0-rc1-final",
"EntityFramework.MicrosoftSqlServer": "7.0.0-rc1-final",
"EntityFramework.Commands": "7.0.0-rc1-final"
我的DatabaseContext类非常简单
public class WorldContext : DbContext
{
public DbSet<Trip> Trip { get; set; }
public DbSet<Stop> Stop { get; set; }
public WorldContext()
{
Database.EnsureCreated();
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
var connectionString = Startup.Configuration["Data:WorldContextConnection"];
optionsBuilder.UseSqlServer(connectionString);
base.OnConfiguring(optionsBuilder);
}
}
在构造函数中点击Database.EnsureCreated
方法时遇到问题。据我所知,这个方法应该确保数据库在不存在的情况下被创建,否则它应该什么都不做。当我通过我的DatabaseContext类代码调试时,我点击了Database.EnsureCreated
方法上设置的断点,当执行继续时,断点被第二次命中(这不是预期的),因此DatabaseContext构造函数由于某种原因进入了两次。在第二次命中时抛出以下异常
即使数据库存在,EnsureCreated
方法也不应忽略它吗?我在这里错过了什么吗?
答案 0 :(得分:4)
请勿在构造函数中调用ensure,但在app start
期间调用一次