0
我在Application Start處創建數據庫時遇到錯誤,而完全相同的代碼在所有其他項目中工作得非常好。在Startup.csDatabase.EnsureCreated處出現堆棧溢出異常EF 7 ASP.NET 5 MVC 6
啓動功能
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)
{
}
}
錯誤截圖
可能是一個錯誤,如https://github.com/aspnet/EntityFramework/issues/3799。另外,http://stackoverflow.com/help/no-one-answers。在問題上開始賞金是吸引更多注意力並獲得答案的好方法。 – natemcmaster