2016-11-09 2 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

다음과 같은 코드를 사용하여 엔티티 프레임 워크 코어에 계류중인 마이그레이션의 목록을 얻을 수 있습니다 : 여기에서 작동하는 방법을 보여주는 기사입니다

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

관련 문제