2016-11-09 17 views
0

データベース上で実行されている最新の移行バージョンを確認する方法があるかどうかを判断しようとしています。これは特定のデータベースの状態を知るためのものです。現在データベースにある移行(バージョン)を確認する方法ですか?

私は、エンティティフレームワーク6についてトラックを保持するテーブルを作成しています。私はそれを試していないが、エンティティフレームワークコアに類似したものがあれば知りたい。

+1

dbMigrator.GetPendingMigrations:

using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Migrations; 

はあなたがEF 6を持っているのと同様の、より正式なAPIのための未解決の問題があります:

あなたが使用して文のカップルを含める必要が(https://msdn.microsoft.com/en-en/library/system.data.entity.migrations.dbmigrator.getpendingmigrations(v=vs.113).aspx)あなたが正しく理解している場合、あなたが探しているものかもしれません – Dominik

+0

EF 6またはEF Coreで保留中の移行を取得しますか? –

答えて

3

少なくともアセンブリで定義されていますが、ターゲット・データベースに を適用されていない

移行を得ることが可能です。 DbMigratorの方法getPendingMigrations()介し

source)。

データベースの実際のバージョンが必要な場合は、実際にはMigrationIdという列を含む移行履歴テーブル__MigrationHistoryがあります。 https://msdn.microsoft.com/en-us/data/dn456841.aspx

2

次のコードを使用してEntity Frameworkのコア保留中のマイグレーションのリストを取得することが可能である:ここでは、それを操作する方法を示す記事です

var migrationsAssembly = db.GetService<IMigrationsAssembly>(); 
var historyRepository = db.GetService<IHistoryRepository>(); 

var all = migrationsAssembly.Migrations.Keys; 
var applied = historyRepository.GetAppliedMigrations().Select(r => r.MigrationId); 
var pending = all.Except(applied); 

https://github.com/aspnet/EntityFramework/issues/6110#issuecomment-242220554を参照してください。 )(https://github.com/aspnet/EntityFramework/issues/577

関連する問題