【问题标题】:Stack Overflow exception at Database.EnsureCreated EF 7 ASP.NET 5 MVC 6Database.EnsureCreated EF 7 ASP.NET 5 MVC 6 的堆栈溢出异常
【发布时间】:2016-06-25 02:46:08
【问题描述】:

我在应用程序启动时创建数据库时遇到错误,而完全相同的代码在所有其他项目中运行良好。

Startup.cs 中的启动函数

public Startup(IHostingEnvironment env)
{
    // Set up configuration sources.
    var builder = new ConfigurationBuilder()
            .AddJsonFile("appsettings.json")
            .AddEnvironmentVariables();

    if (env.IsDevelopment())
    {
        // This will push telemetry data through Application Insights pipeline faster, allowing you to view results immediately.
            builder.AddApplicationInsightsSettings(developerMode: true);
    }
    Configuration = builder.Build();
    Globals.Configuration = Configuration;
    Globals.HostingEnvironment = env;
    Globals.EnsureDatabaseCreated();
}

Globals.EnsureDatabaseCreated()

public static void EnsureDatabaseCreated()
    {
        var optionsBuilder = new DbContextOptionsBuilder();
        if (HostingEnvironment.IsDevelopment()) optionsBuilder.UseSqlServer(Configuration["Data:dev:DataContext"]);
        else if (HostingEnvironment.IsStaging()) optionsBuilder.UseSqlServer(Configuration["Data:staging:DataContext"]);
        else if (HostingEnvironment.IsProduction()) optionsBuilder.UseSqlServer(Configuration["Data:live:DataContext"]);
        var context = new ApplicationContext(optionsBuilder.Options);
        context.Database.EnsureCreated();

        optionsBuilder = new DbContextOptionsBuilder();
        if (HostingEnvironment.IsDevelopment()) optionsBuilder.UseSqlServer(Configuration["Data:dev:TransientContext"]);
        else if (HostingEnvironment.IsStaging()) optionsBuilder.UseSqlServer(Configuration["Data:staging:TransientContext"]);
        else if (HostingEnvironment.IsProduction()) optionsBuilder.UseSqlServer(Configuration["Data:live:TransientContext"]);
        new TransientContext(optionsBuilder.Options).Database.EnsureCreated();
    }

ApplicationContext.cs

public class ApplicationContext : DbContext
{
    public DbSet<Models.Security.User> Logins { get; set; }
    public DbSet<Models.Security.Session> Sessions { get; set; }
    public DbSet<Models.Security.Verification> VerificationTokens { get; set; }

    public DbSet<Models.CRM.User> Users { get; set; }
    public DbSet<Models.CRM.Organization> Merchants { get; set; }
    public DbSet<Models.CRM.LinkedAddress> Shops { get; set; }
    public DbSet<Models.CRM.ContactDetail> ContactDetails { get; set; }
    public DbSet<Models.CRM.Location> Locations { get; set; }

    public ApplicationContext(DbContextOptions options) : base(options)
    {
    }
}

错误截图

【问题讨论】:

标签: c# asp.net asp.net-mvc entity-framework entity-framework-core


【解决方案1】:

在等待两天后,不幸的是,我最终创建了一个新项目并在那里复制代码并且它工作。好像是配置问题。

注意:由于我没有收到任何答案,我将其标记为正确答案。如果将来有用户来分享他们的观点,如果它为未来的读者增加了一些价值,我将很乐意标记他们的答案。

【讨论】:

  • @Rabadash8820 我没有标记它,因为它不是一个解决方案,我再也没有回到这个问题。
猜你喜欢
  • 2010-11-27
  • 1970-01-01
  • 2016-02-19
  • 2012-05-28
  • 1970-01-01
  • 2013-09-28
  • 1970-01-01
相关资源
最近更新 更多