我正在使用下面列出的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构造函数。在第二次命中时,引发以下异常

c# - Database.EnsureCreated无法正常工作-LMLPHP

即使数据库存在,EnsureCreated方法也不应该忽略它吗?我在这里想念什么吗?

最佳答案

不要调用确保在您的构造函数中创建的方法,而是在应用启动过程中调用一次

08-08 04:00