1

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

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

4

1 回答 1

2

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

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

这将删除我的数据库并创建一个反映最新模型的新数据库,我什至可以为数据库播种一些数据以进行测试。

于 2010-11-30T19:57:10.123 回答