2

:이 일을 엔티티 프레임 워크 (6)에서MigrationHistory 엔티티 프레임 워크에서 DbContext의 엔티티로 내 데이터베이스 컨텍스트에 엔티티로 (엔티티 프레임 워크 생성에 의해) 테이블 <code>__EFMigrationsHistory</code>을 얻으려고 7

enter image description here

환상적으로,하지만 누군가 EntityFramework 7에서 그것을 시도 했습니까? 나는이 시도 무엇

, 그냥 새로운 클래스 __EFMigrationsHistory를 추가합니다 -하지만 너무 쉬운 것 - there is already a table named __EFMigrationsHistory in the database (덕분에 ...)

그럼 내가 그 HistoryRow에 대해 읽고 난에서 클래스를 상속된다. 그래서

public class MigrationsHistory : HistoryRow 
{ 
    //... constructor etc. 
} 

은 마이그레이션을 시작 클래스를 생성 : 나는 두 마이그레이션 역사 테이블을 가지고 (하지만 원래 작동)

그래서 내가 읽어와 인터페이스 및 구현하는 클래스를 검색/상속하다. 나는 SqlServerHistoryRepository를 발견했다 - 멋지게 보인다. 나는 SqlServerHistoryRepository을 상속받은 새로운 데이터베이스 콘텍스트를 만들었다. (마치 EF6에서 그렇게했을 것이다.) -하지만 이것은 컨텍스트 클래스가 아니므로 Startup.cs에서 추가 할 수 없습니다 (내 기본 applicationcontext로 수행 한 것처럼)

따라서 DbContext을 확인한 결과 어딘가에 EF6),하지만 내 컨텍스트에 테이블을 추가하기위한 아무것도 없습니다.

So : 누구든지 이미 자신의 컨텍스트에 이전 기록을 추가하려고 했습니까? 누구든지 성공 했습니까? 이름으로 테이블에

답변

2

을 (실수로 DbContext.Database.EnsureCreate()를 호출하여 예) EF Core 2.0에서 성공하지 못했던 bricelam의 답변을 실험했지만, Microsoft.EntityFrameworkCore에 을 넣었습니다.

// .NET Core 1.0 + Platform Extensions 
// Microsoft.EntityFrameworkCore.Relational, Version=1.1.0.0, PublicKeyToken=adb9793829ddae60 

namespace Microsoft.EntityFrameworkCore 
{ 
    public static class RelationalDatabaseFacadeExtensions 
    { 
     public static IEnumerable<string> GetAppliedMigrations(this DatabaseFacade databaseFacade); 
    } 
} 

다음과 같이 호출하십시오.

var dbcontext = new DbContext(); 
IEnumerable<string> history = dbcontext.Database.GetAppliedMigrations(); 
0

매핑, 당신은 단지 그것을 다시 만들려고하지 않는 당신을 확인해야합니다 (쉽게입니다) 작업을해야

class MyContext : DbContext 
{ 
    public DbSet<AppliedMigration> AppliedMigrations { get; set; } 
} 

[Table("__EFMigrationsHistory")] 
class AppliedMigration 
{ 
    [Column("MigrationId")] 
    public string Id { get; set; } 

    [Column("ProductVersion")] 
    public string EFVersion { get; set; } 
} 
+0

데이터베이스를 다시 생성하지 않았습니다. 새 프로젝트 인 ef7 마이그레이션을 설정하고 첫 번째 프로젝트를 추가하고 두 번 추가하려고합니다. 생성 된 마이그레이션 파일을 조작해야하지만이 문제를 해결하는 것은 잘못된 방법이라고 생각합니다. –

+0

내일 다시 시도하겠습니다. 나는이 답변으로 돌아와 :)이 일을보기 좋게 생각합니다. –

+0

생성 된 마이그레이션을 수정하십시오! 예,이 문제를 해결할 수있는 * 올바른 방법입니다 ([# 2725] (https://github.com/aspnet/EntityFramework/issues/2725)가 구현 될 때까지) – bricelam