4

내가 기존 SQL Server 데이터베이스를 사용했다뿐만 아니라 코드 먼저 사용하고 싶었 엔티티 프레임 워크 (5)와 함께 ASP.Net MVC4 웹 응용 프로그램을 구축하고, 그래서이 튜토리얼을 따라 http://msdn.microsoft.com/en-us/data/jj200620.aspx엔티티 프레임 워크 자동 마이그레이션 기존 데이터베이스

내 응용 프로그램은 Entity Framework에서 자동 마이그레이션을 사용합니다.

개발 단계에서 사용했던 SQL Server 버전은 2008 년 이었지만 마지막 순간에는 SQL Server 2005에서 데이터베이스가 작동해야한다고 들었습니다. SQL Server에서 사용했던 데이터베이스가 있습니다. SQL 서버 2005에서 2008 년 설정 (정확한 테이블, 속성 이름, 관계 등). 그러나 내 웹 환경 설정을 사용하여 SQL Server 2005 데이터베이스를 가리키고 내 모델 클래스 중 하나를 변경하면 자동 마이그레이션 일하지 마.

나는 다음과 같은 오류

데이터베이스에 'tblcourseprofessionTarget'라는 개체가 이미 있습니다를 얻을.

아무도 도와 줄 수 있습니까?

감사합니다.

충분한 정보를 추가하지 않은 경우 사과드립니다.

+0

2005 데이터베이스를 수동으로 작성했거나 migrate.exe (또는 데이터베이스 업데이트 명령)를 사용하여 작성 했습니까? 수동으로 수행 한 경우 __MigrationHistory 테이블 (일반적으로 시스템 테이블)에 복사 했습니까? – Leo

답변

8

밥상

위 내 이전의 초기 마이그레이션 클래스를 삭제했다이 문서 http://christesene.com/entity-framework-4-3-code-first-with-automatic-migrations/

에 의해 도움이되었다 내 문제에 대한 답변을 다시는 만듭니다.

+0

3 년 동안 ef7을 사용하여 동일한 문제가 발생했습니다. :)! 이 기사가 말했듯이, 처음의 'Up'과 'Down'마이그레이션에서 모든 것을 제거하면 * 모든 * 향후 마이그레이션에 대한 문제가 해결됩니다. – James

4

비슷한 문제가있었습니다.

나를위한 원인은 데이터베이스에서 이미 다른 MigrationID를 사용하여 동일한 마이그레이션을 실행했기 때문입니다. 201504302005411_InitialCreate이 있었지만 마이 그 레이션 스크립트는 201505041911076_InitialCreate입니다.

데이터베이스의 MigrationID를 내 코드의 이름과 일치하도록 변경하여 문제를 해결했습니다.

나는 상황이 어떻게 끝났는지 잘 모르지만 MigrationID의 이름을 바꾸면 앱이 스크립트가 이미 실행되었다는 것을 알았습니다.

+0

동일한 문제가 발생했습니다.아직 첫 번째 버전을 배포하지 않았으므로 나에게 줄 수있는 조언이 있습니까? 나는 MigrationId 테이블과 해당 InitialMigration 클래스가 동일한 ID를 갖도록 응용 프로그램을 배포하기 전에 마이그레이션을 사용하는 것이 타당한 지 궁금합니다. 어떤 죄수? – peval27

+0

나는 이것이 조금 오래되었다는 것을 알고 있지만 같은 문제에 직면하고있다. migrationId'201708250106326_InitialCreate'이 성공적으로 생성되었습니다. 그러나 어떻게 다른 마이그레이션을 실행하려고 시도한 후에 이름이 '201802011731015_InitialCreate'로 바뀌 었는지 알 수 없습니다. 더 나쁜 것은 프레임 워크가 모든 마이그레이션을 다시 실행하려고 시도했기 때문입니다. 문제의 원인을 찾을 수 있었습니까? – jvretamero

0

컨텍스트 인 경우 : 새 엔티티 클래스가 추가되었지만 마이그레이션하려고 시도 할 때 db 컨텍스트에서 해당 개체를 제거한 다음 update-database를 실행하고 해당 개체를 다시 추가하고 업데이트를 다시 실행하십시오. 예를 들어

을 -database : 데이터를 가지고 있는지 여부

public DbSet<CustomizedEmail> CustomizedEmail { get; set; } 
public DbSet<KeyWordsForEmail> KeyWordsForEmail { get; set; } 
public DbSet<Notice> Notice { get; set; }//remove it>run update-database> 
//add again the above entity and rerurn update-database 

이 작동합니다. 이 프로세스에서 해당 테이블의 데이터가 손실됩니다.

관련 문제