11

私はCMSASP.NETMVCフレームワーク(大学の最終プロジェクト用)を介して単純なものを書いています。私の問題はモジュールのデータ移行戦略にあります。各モジュールはインストール時にデータベーススキーマを更新するため、データベース移行メカニズムをモジュールに実装する必要があります。インストールsystem.ok、data-migrationエンティティフレームワークにはすでに存在します(MSのおかげで)が、移行コマンドはパッケージマネージャーコンソールで実行されます。Data-Migrationプログラムでコードを実行する方法はありますか?どんな助けでも大歓迎です。

4

2 に答える 2

21

パッケージ マネージャー コンソールで自動移行を有効にしている場合は、アプリの init セクション ( SimpleMembershipInitializerなど)で次のコードを使用できます。

var migratorConfig = new Migrations.Configuration();
var dbMigrator = new DbMigrator(migratorConfig); 
dbMigrator.Update();

Migrations.Configurationは、プロジェクトの名前空間 ( YourProjectNamespace.Migrations )に配置された移行構成クラスです

プログラムで使用する場合は、最初に EF 初期化子をオフにする必要があります。

Database.SetInitializer<YourDBContext>(null);

問題は、データベースが存在しない場合、プログラムによる更新によってデータベースが作成されることです。

于 2013-05-03T16:42:45.780 に答える
10

このクラスは、EF の移行をコードで公開します。

System.Data.Entity.MigrateDatabaseToLatestVersion

ただし、EF では、移行はデータベース全体で機能します。データベースのモジュール部分ではありません。


このクラスも見つけました:

System.Data.Entity.Migrations.DbMigrator

于 2012-11-12T11:33:49.927 に答える