我在.net MVC 2.0项目中使用Entity Framework 4 Code First,我很难让我的数据库与我的实体同步。我想要的是一个我可以调用的页面,例如:/ DB / Recreate,它会丢弃我当前的数据库并重新创建一个空数据库。目前在我的global.asax我有
protected override void OnApplicationStarted()
{
Database.SetInitializer(new CreateDatabaseOnlyIfNotExists<CorpiqDb>());
AreaRegistration.RegisterAllAreas();
RegisterRoutes(RouteTable.Routes);
RegisterAllControllersIn(Assembly.GetExecutingAssembly());
}
我尝试在我的操作中切换数据库初始化程序,但我真的不确定,因为它应该已经初始化,我正在使用正确的方法:
Database.SetInitializer(new AlwaysRecreateDatabase<CorpiqDb>());
var bidon = _session.All<Admin>();
Database.SetInitializer(new CreateDatabaseOnlyIfNotExists<CorpiqDb>());
bidon = _session.All<Admin>();
我真的不知道该怎么做,谢谢你的帮助!
答案 0 :(得分:2)
好的,我找到了解决方案:
var dbContext = new CorpiqDb().Database ;
dbContext.Delete();
dbContext.Initialize();
dbContext.EnsureInitialized();
Database.SetInitializer(new CreateDatabaseOnlyIfNotExists<CorpiqDb>());
这将删除我的数据库并创建一个反映最新模型的新数据库,我甚至可以为我的测试提供一些数据。