CodeFirst가 데이터베이스에서 마이 그 레이션을 실행하지 못하게하려면 어떻게합니까?EF CodeFirst가 Unity에서 종속성 삽입을 구성 할 때 데이터베이스에서 마이그레이션을 실행하지 못하도록하려면 어떻게해야합니까?
나는 다음과 같은 오류 메시지가 발생 SqlException
을 얻고있다 :
Invalid object name 'dbo.__MigrationHistory'.
이러한 예외는 잡아서 내 로깅 프레임 워크에 의해 기록되고있다. 예외가 발생하는 것을 방지하여 내 응용 프로그램에서 가짜 로그 메시지가 많이 생성되지 않도록해야합니다.
나는 __MigrationHistory
테이블이 코드 첫 마이그레이션의 일부임을 이해합니다. I 코드 우선 사용하지만 은 마이그레이션을 사용하지 않습니다.
static InstitutionContext()
{
System.Data.Entity.Database.SetInitializer<InstitutionContext>(null);
}
(이, 물론, InstitutionContext
라는 DbContext
객체.)
나는이 작업을 수행하여 코드 줄이 맞았는지 확인했습니다. 그러나 로그에서 여전히 오류가 발생합니다.
는 무슨 일이 일어나고 있는지 설명하고 있으며 기본적으로 정확하다고 생각합니다. 간단히 말해서 EF는 __MigrationsHistory
테이블을 조사 중이며 찾지 못하면 예외를 throw 한 다음 마이그레이션을 수행하지 않고 계속 진행합니다. 그러나 그 대답은 예외가 발생하는 것을 어떻게 억제하는지 설명하지 않습니다.
EF 코드 첫 마이그레이션이 실행되어 해당 SqlException
을 던지지 않도록하려면 어떻게해야합니까?
UPDATE 1
나는의 App.config/Web.config 파일을 통해 설정을 구성했는데, 그 중 하나가 작동하지 않았다. 있어야 할 것처럼
public class MyDbConfiguration : DbConfiguration
{
public MyDbConfiguration()
{
SetDatabaseInitializer<InstitutionContext>(null);
}
}
클래스는 DbContext
와 같은 조립에 : 나는이 같은 자신의 구성 클래스에 내 DbContext
에 정적 메서드에서 이동했습니다. 이것도 작동하지 않았다.
업데이트 2
문제는 유니티 컨테이너 관련이있는 것으로 밝혀졌다, 그리고 EF와 유니티는 내가 모두 구성한 방법 어떻게 주어진 상호 작용했다. 아래의 my answer을 참조하십시오.
'disableDatabaseInitialization' 속성을 사용해 보셨습니까? https://msdn.microsoft.com/en-us/data/jj556606#Initializers – jmoerdyk
나는 그것을 시도했지만 올바른 장소에 넣었는지 확실치 않습니다. 나는 이것을 웹 프로젝트의 Web.config에 넣었지만, Azure를 통해이 작업이로드되므로, 뭔가 변경되는지 확실하지 않습니다. 구성 파일 대신 코드를 통해이를 수행 할 수있는 방법이 있습니까? –
프로젝트가 어떻게 구성되어 있는지에 따라 작동해야합니다. 대체 방법은 다음과 같습니다. https://romiller.com/2014/06/10/reducing-code-first-database-chatter/ –