1

.netMVC2.0プロジェクトでEntityFramework4 Code Firstを使用していますが、DBをエンティティと同期させるのに苦労しています。私が欲しいのは、たとえば/ DB / Recreateとして呼び出すことができるページで、現在のDBを削除し、空のDBを再作成します。現在私の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

OK私は解決策を見つけました:

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

これにより、データベースが削除され、最新のモデルを反映した新しいデータベースが作成されます。テスト用のデータをデータベースにシードすることもできます。

于 2010-11-30T19:57:10.123 に答える