1

ASP.NET MVC 5 응용 프로그램과 함께 Entity Framework 6을 사용하고 있습니다. 나는 내 프로젝트에서 코드 우선 접근법을 사용하고 싶지 않다.Entity Framework 6에서 마이그레이션을 한 번에 중지하는 방법은 무엇입니까?

나는 새 프로젝트를 만들었지 만 마이그레이션을 활성화하지 못했습니다. DbContext 클래스를 확장하는 MyContext이라는 새로운 클래스를 만들었습니다. 여기에 내가 그러나 MyContext 생성자

public MyContext() 
    : base(ConnectionName) 
{ 
     Database.SetInitializer<MyContext>(null); 
} 

이 무엇인지, 내가 응용 프로그램을 선보일 때마다, 내 Debug output 화면에서 다음과 같은 출력을 참조하십시오.

SELECT Count(*) 
FROM INFORMATION_SCHEMA.TABLES AS t... 

SELECT 
[GroupBy1].[A1] AS [C1] 
FROM (SELECT 
    COUNT(1) AS [A1] 
    FROM [dbo].[__MigrationHistory] AS [Extent1] 
    WHERE [Extent1].[ContextKey] = @p__linq__0 
) AS ...... 

어떻게 정말 내 응용 프로그램에서 마이그레이션을 중지 할 수 있습니다?

+0

이미 솔루션에서 백엔드 및 마이그레이션 폴더에서 __MigrationHistory 테이블을 삭제 했 : :)

그래서 이렇게? –

+0

프로젝트에'Migrations' 폴더 또는'Configuration.cs' 파일이 있습니까? '예'인 경우 삭제하십시오. – Alisson

+0

__MigrationHistory 테이블이 없습니다. Migrations 폴더 나'Configuration.cs' 파일도 없습니다. 이러한 것들은 내가하지 않은 콘솔에서 마이 그 레이션을 가능하게 한 후에 만들어집니다. –

답변

0

거기에는 많은 예제가 있습니다. 가장 먼저해야할 일은 너겟을 통해 전동 공구를 설치 한 다음 DB가 이미있는 경우 리버스 엔지니어링 마법사를 사용하는 것입니다. 또한 처음부터 시작한다면이 부분을 살펴보십시오. EF DB First

그러면 올바른 컨텍스트가 만들어집니다. 그것이 사실 경우 사용하여 .NET 코어는 다음 링크

.net core reverse engineer

3

를 살펴 경우

당신은하지 Migrations 폴더없이 Configuration.cs 파일, 당신이 놓친 생각하는 유일한 방법을있다가 데이터베이스 이니셜 라이저.

이 (source)를 구성 파일을 사용하여 비활성화 추가하려면 : 당신이 Database.SetInitializer<MyContext>(null);와 데이터베이스 초기화를 해제하는 하더라도,이 구성 파일을 사용하여 구성 할 수 있습니다

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <appSettings>  
     <add key="DatabaseInitializerForType MyNamespace.MyDbContext, MyNamespace" 
      value="Disabled" /> 
    </appSettings> 
</configuration> 
0

문제는 라인입니다

Database.SetInitializer<MyContext>(null); 

인스턴스 생성자가 아닌 정적 생성자에 있어야합니다!

static MyContext() 
{ 
     Database.SetInitializer<MyContext>(null); 
}