我試圖通過EF Code First,在應用程序啓動時通過一些測試數據爲我的應用程序播種。ASP.NET MVC 3 - DBContext類未執行
這裏就是我觀察:
當我運行應用程序,執行進入:在的Application_Start(
Application_Start() {}
再一次),它的土地上:
Database.SetInitializer<LocatorContext>(new DropCreateDatabaseAlways<LocatorContext>());
但它永遠不會進入播種發生的DBContext類(ClubLocatorContext.cs), , 其他事情。
任何想法,爲什麼或如何我可以修復它將不勝感激。
我的Global.asax.cs文件
//Global.asax.cs
protected void Application_Start()
{
Database.SetInitializer<LocatorContext>(new DropCreateDatabaseAlways<LocatorContext>());
AreaRegistration.RegisterAllAreas();
RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
}
我的DbContext類
//ClubLocatorContext.cs
using System;
using System.Collections.Generic;
using System.Data.Entity.ModelConfiguration.Conventions;
using System.Linq;
using System.Web;
using System.Data.Entity;
using System.Data.Entity.Infrastructure;
using ClubLocator.Models;
using ClubLocator.Models.ViewModels;
namespace ClubLocator.DAL
{
public class LocatorContext : DbContext
{
public DbSet<Prospect> Prospects { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}
public void Seed(LocatorContext context)
{
var prospect = new List<Prospect>
{
new Prospect
{
FirstName = "John",
LastName = "Smith",
Address1 = "1313 Mockingbird Lane",
Email = "[email protected]"
}
};
prospect.ForEach(r => context.Prospects.Add(r));
context.SaveChanges();
}
public class DropCreateIfChangeInitializer : DropCreateDatabaseIfModelChanges<LocatorContext>
{
protected override void Seed(LocatorContext context)
{
context.Seed(context);
base.Seed(context);
}
}
public class CreateInitializer : DropCreateDatabaseAlways<LocatorContext>
{
protected override void Seed(LocatorContext context)
{
context.Seed(context);
base.Seed(context);
}
}
static LocatorContext()
{
#if DEBUG
Database.SetInitializer<LocatorContext> (new DropCreateIfChangeInitializer());
#else
Database.SetInitializer<LocatorContext> (new CreateInitializer());
#endif
}
}
}
這只是設置初始化,未初始化。當你訪問數據庫時,它將創建數據庫和種子數據。 –
傑森,謝謝。 Application_Start()中看起來像什麼:? – Slinky