마이그레이션 IgnoreChanges
을 시작했고 초기 마이그레이션에 사용했지만 이제는 모든 마이그레이션을 삭제하고 모든 논리를 사용하여 초기 마이그레이션을 시작하려고합니다.
폴더에서 마이그레이션을 삭제하고 시도 Add-Migration
하여 전체 파일을 생성하지 않으면 (비어 있습니다. 마지막으로 변경되지 않았지만 지금은 마이그레이션되었으므로 삭제되었습니다).
어떤 거기에 안-마이그레이션 내가 다시 실행할 수 있도록 명령은 Enable-Migrations
?
답변
당신은해야합니다 :
- 상태 삭제 : 프로젝트에서 마이그레이션 폴더를 삭제하십시오. 과
__MigrationHistory
데이터베이스 에서 테이블을 삭제하십시오 (시스템 테이블 아래에있을 수 있음). 그때-
패키지 관리자 콘솔에서 다음 명령을 실행하십시오.
Enable-Migrations -EnableAutomaticMigrations -Force
유무에 관계없이 사용
-EnableAutomaticMigrations
-
마지막으로 다음을 실행할 수 있습니다.
Add-Migration Initial
답변
문제 : 마이그레이션을 중단 시켰으며 기존 테이블을 삭제하지 않고 재설정하려고합니다.
문제점 : EF가 처음부터 테이블을 작성하려고하므로 데이터베이스의 기존 테이블로 마이그레이션을 재설정 할 수 없습니다.
해야 할 일 :
-
Migrations_History 테이블에서 기존 마이그레이션을 삭제하십시오.
-
마이그레이션 폴더에서 기존 마이그레이션을 삭제하십시오.
-
추가 마이그레이션 재설정을 실행하십시오. 그러면 마이그레이션 폴더에 테이블 생성이 포함 된 마이그레이션이 생성되지만 실행되지 않으므로 오류가 발생하지 않습니다.
-
이제 EF가 현재 상태의 스냅 샷을 갖도록 MigrationHistory 테이블에서 초기 행을 작성해야합니다. 마이그레이션을 적용하면 EF가이를 수행합니다. 그러나 테이블이 데이터베이스에 이미 존재하므로 방금 수행 한 마이그레이션을 적용 할 수 없습니다. 따라서 마이그레이션으로 이동하여 “Up”메소드 내부의 모든 코드를 주석 처리하십시오.
-
이제 update-database를 실행하십시오. 마이그레이션을 적용하고 (실제로 데이터베이스를 변경하지는 않음) MigrationHistory에서 스냅 샷 행을 만듭니다.
이제 마이그레이션을 재설정했으며 일반 마이그레이션을 계속할 수 있습니다.
답변
어때요?
Update-Database –TargetMigration: $InitialDatabase
패키지 관리자 콘솔에서 모든 업데이트를 초기 상태로 재설정해야합니다.
답변
이 문제를 해결하려면 다음을 수행해야합니다.
-
마이그레이션 폴더에서 모든 * .cs 파일을 삭제하십시오.
-
데이터베이스에서 _MigrationHistory 테이블을 삭제하십시오.
-
운영
Enable-Migrations -EnableAutomaticMigrations -Force
-
운영
Add-Migration Reset
그런 다음 public partial class Reset : DbMigration
클래스에서 기존 테이블과 현재 테이블을 모두 주석 처리해야합니다.
public override void Up()
{
// CreateTable(
// "dbo.<EXISTING TABLE NAME IN DATABASE>
// ...
// }
...
}
이 비트를 놓치면 모든 것이 실패하고 다시 시작해야합니다!
- 지금 실행
Update-Database -verbose
위의 작업을 올바르게 수행하면 정상적으로 완료되며 이제 정상적으로 수행 할 수 있습니다.
답변
우리가 .NET Core에서 EF를 검색 할 때 이것이 여전히 나타난다는 것을 고려할 때, 여기에 답을 게시 할 것입니다 (많은 유령이 있기 때문에). EF 6 .NET 버전에는 미묘한 부분이 있습니다 (초기 명령이 없으므로 “스냅 샷”파일을 삭제해야합니다)
(.NET Core 2.1에서 테스트)
단계는 다음과 같습니다.
_efmigrationhistory
테이블을 삭제하십시오 .- 이름에 Snapshot 이 포함 된 파일 (예 :)을 찾기 위해 전체 솔루션을 검색
ApplicationDbContextSnapshot.cs
하고 삭제하십시오 . - 솔루션 재 구축
- 운영
Add-Migration InitialMigration
참고 :
모든 스냅 샷 파일을 삭제해야합니다 . 데이터베이스를 삭제하는 데 많은 시간이 걸렸습니다 … 이렇게하지 않으면 빈 마이그레이션이 생성됩니다.
또한 # 3에서는 원하는대로 마이그레이션 이름을 지정할 수 있습니다.
추가 리소스는 다음과 같습니다.
asp.net CORE 마이그레이션 생성 빈
답변
EntityFramework 6에서 다음을 시도하십시오.
Add-Migration Initial
초기 마이그레이션 파일을 업데이트합니다.
답변
Entity Framework Core에서
- 마이그레이션 폴더에서 모든 파일을 제거하십시오.
- 콘솔에 입력
dotnet ef 데이터베이스 삭제 -f -v
dotnet ef 마이그레이션으로 초기 추가
닷넷 ef 데이터베이스 업데이트