DBスキーマがリリースごとに異なる(更新ビュー、追加/削除列)ウィンドウアプリケーションを開発しています。したがって、アプリケーションがクライアントマシンで起動するときに、EFがスキーマを更新できるようにする方法を探しています。私はいくつかの記事を読んでいますが、彼らは私の場合は使用できないパッケージマネージャーコマンドAdd-Migration, Update-Database
を指しています。 私は試したときにリポジトリパターンを使用しましたDatabase.SetInitializer<C>(new MigrateDatabaseToLatestVersion<C, Configuration<C>>());
私にはが保留中の変更があり、自動移行が無効になっているため、現在のモデルと一致するようにデータベースを更新できません。保留中のモデル変更をコードベースの移行に書き込むか、自動移行を有効にします。自動移行を有効にするには、DbMigrationsConfiguration.AutomaticMigrationsEnabledをtrueに設定します。例外 しかし、AutomaticMigrationsEnabled = true;
を設定すると、別のエラーが発生します。テーブル 'TableName'は既に存在します。Entity Frameworkコード一次移行を使用してアプリケーション起動時にDBスキーマを更新する
0
A
答えて
0
私は拡張メソッド
public static void RunMigration(this DbContext context, DbMigration migration)
{
var prop = migration.GetType().GetProperty("Operations", BindingFlags.NonPublic | BindingFlags.Instance);
if (prop != null)
{
IEnumerable<MigrationOperation> operations = prop.GetValue(migration) as IEnumerable<MigrationOperation>;
var generator = new SqlServerMigrationSqlGenerator();
var statements = generator.Generate(operations, "2008");
foreach (MigrationStatement item in statements)
context.Database.ExecuteSqlCommand(item.Sql);
}
}
を作成し、通常の移行のようなDbMigrationを継承したクラスMyMigration
を作成し、回避策を発見し、アプリケーションが起動したとき、私はチェックして、以下のように実行することを強制します:
var myMigration = new MyMigration();
myMigration.Up();
this.RunMigration(myMigration);
関連する問題
- 1. アプリケーション起動時にEntity Frameworkコアを使用してデータベース移行を実行する
- 2. 実行時にEntity Frameworkとコードを使用してデータベースを変更する
- 3. エラーEntity FrameworkコードからDBに最初に移動する
- 4. アプリケーションの起動時にコードを実行するPhoenix Framework(Elixir)
- 5. Entity Frameworkの起動時間
- 6. Entity Frameworkコードを使用したDVCSプロジェクトの最初の移行
- 7. ADO.NET Entity Framework 4.0でDBを更新
- 8. Entity Framework + Repository + Unit of Workを使用してアプリケーションを起動する方法は?
- 9. Entity Frameworkで移行しないでデータベースを更新します
- 10. Entity Frameworkを使用して単一行を更新する - エンティティマッピングを使用する場合
- 11. は、Entity Frameworkのコアの移行を使用して主キーを変更する
- 12. WebDeployを使用してWebアプリケーションを公開するときにDBでコード一次移行を自動的に実行する方法
- 13. Entity FrameworkコアとSQLiteを使用してDBを移行するときにテーブルが既に存在する
- 14. Entity FrameWorkを使用してレコードを更新する。更新時の新しいレコード
- 15. Entity Frameworkスキーマ名の変更
- 16. Entity Frameworkユーザーアカウント - スキーマの変更
- 17. Entity Frameworkを使用したMVCアプリケーションのDB接続文字列
- 18. Entity-Framework自動更新
- 19. Entity Frameworkを使用して既存の行を更新する方法は?
- 20. Entity Frameworkコードの最初の移行を使用してデータベーステーブル名を変更します
- 21. Entity Framework 6コードでの移行
- 22. Entity Framework 6 - CodeFirst移行を使用してお客様のデータベースを更新する方法
- 23. Entity Frameworkのコード - 最初:移行は強制的に、更新データベースで失敗し不必要なアドオン移行
- 24. Entity Framework 4.3データ移行 - 単一のシードメソッド?
- 25. IDを一時的にオフにする - Entity Framework 4.1コード先頭
- 26. Entity Framework - 再起動 - すべての移行の元に戻す/ロールバック
- 27. Server ProductionでMigration DB Entity Frameworkを更新する方法
- 28. Entity Frameworkを使用して移行をロールバックする正しい方法
- 29. 次にEntity Frameworkを使用するDLLを使用する
- 30. Entity Frameworkを使用したN層アプリケーションでのデータベースの移行CodeFirst
[こちら](http://stackoverflow.com/questions/35144784/how-to-use-migration-programmatically-in-entityframework-codefirst)と[ここ](https://romiller.com)をご覧ください。/2012/02/09/running-scripting-migrations-from-code /) –
私はすでに読んでいますが、成功しませんでした。私は質問を更新して詳細を詰めました@SteveGreene –
マイグレーションが正しく設定されていないようです。最初のベースライン移行「Add-Migration MyBaseline -IgnoreChanges」を作成する必要があります。その後の変更では、通常どおりに移行を追加します。 –