2017-12-11 2 views
0

이미 스택 오버플로에 대해 많은 질문이 있다는 것을 알고 있습니다 만, 이것은 약간 다릅니다.데이터베이스가 생성 된 이후 'ServicesContext'컨텍스트를 뒷받침하는 모델이 변경되었습니다.

나는 4 개의 다른 환경을 복제하는 4 개의 다른 서버에 4 개의 데이터베이스를 설치했습니다. 샌드 박스, 테스트, 사용자 승인 테스트 및 라이브 이 4 가지 환경에는 대체로 동일한 스키마가 있지만, 샌드 박스와 다른 것들 (샌드 박스와 다른 것들 사이)에는 약간의 차이점이 있습니다 (주로 테스트 할 때 변경됨).

하나의 웹 응용 프로그램에서 Entity Framework를 사용하여 4 가지 환경 모두에 액세스 할 수 있어야합니다. 현재이 기능은 Test, UAT 및 Live에 액세스 할 때 완벽하게 작동합니다. 불행하게도 나는 다음과 같은 오류 얻을 샌드 박스에 올 때 :

System.InvalidOperationException: 'The model backing the 'ServicesContext' context has changed since the database was created.

나는 데이터베이스가 예상되는 것과 다르기 때문에 나는이 오류를 얻고 이해하지만, 내가 EF는 무시 얻을 수있는 방법이 될 수있을 기대했다을 이러한 변경 사항은 액세스하려는 유일한 부분이 모두 동일하기 때문에 가능합니다.

내가 지금까지 생각한 유일한 방법은 EF를 통해 각 데이터베이스를 개별적으로 가져 오는 것이지만, 기본적으로 각 환경에 대한 코드를 복사해야한다는 것을 의미하지는 않습니다. (최소한, 내가 할 수있는 한 알 수있다.)

나는 개인적으로 시스템 구조 나 데이터베이스 스키마를 변경할 수 없으므로 불행히도 옵션이 아니다.

모든 도움을 주시면 감사하겠습니다.

코멘트에 stuartd에서 언급 한 바와 같이
+1

오류 발생을 방지하기 위해 시작할 때'Database.SetInitializer (null); '를 호출 할 수 있다고 생각합니다. – stuartd

+0

그 트릭을 한 것 같습니다. 고맙습니다! – MultiJ

답변

0

는, 다음을 수행하여 문제를 해결합니다

Database.SetInitializer<ServicesContext>(null); 

내가 내 EF 컨텍스트 클래스의 생성자에서이 배치.