如何首先使用EF 4代码创建数据库进行测试

时间:2010-11-29 14:51:01

标签: asp.net-mvc-2 ef4-code-only

我在.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>();

我真的不知道该怎么做,谢谢你的帮助!

1 个答案:

答案 0 :(得分:2)

好的,我找到了解决方案:

var dbContext = new CorpiqDb().Database ;
dbContext.Delete();
dbContext.Initialize();
dbContext.EnsureInitialized();
Database.SetInitializer(new CreateDatabaseOnlyIfNotExists<CorpiqDb>());

这将删除我的数据库并创建一个反映最新模型的新数据库,我甚至可以为我的测试提供一些数据。