29

패키지 관리자 콘솔에서 add-migration 명령을 사용하여 내 모델의 마이그레이션을 생성하기 시작했습니다. 내 질문은 위아래 방법입니다. 아래쪽 메서드의 목적은 데이터베이스에 이미있는 경우 모든 종속성을 제거하고 테이블을 삭제하는 것이라고 가정합니다. 또한 down 메소드는 up 메소드보다 먼저 실행될 것인가? 위의 방법은 역순으로 테이블/색인 생성/업데이트 등입니까?C# 코드 - 처음 마이 그 레이션, 위/아래?

때로는 이것을 사용하면 아래쪽 메서드가 삭제 된 많은 테이블을 가져옵니다. 최근에 많은 테이블을 생성하고 삭제했으며 up 메소드에서 거의 동일한 일이 발생했습니다. 왜?

답변

53

Up 메서드는 데이터베이스를 현재 상태 (이전 마이그레이션으로 표시)에서 현재 코드 마이그레이션으로 예상되는 상태로 업그레이드합니다. Down 메서드는 역방향 작업을 수행합니다. 즉, 현재 마이그레이션에서 모든 변경 사항을 제거하고 데이터베이스를 이전 마이그레이션에서 예상 한 상태로 되돌립니다. 마이그레이션 설치/제거와 같습니다. update-database을 호출 할 때 이러한 메서드 중 하나만 실행됩니다. Down 방법을 사용하려면 업그레이드를위한 대상 마이그레이션을 명시 적으로 지정해야합니다. 대상 마이그레이션이 이전 마이그레이션 인 경우 마이그레이션 API는 자동으로 Down 메소드를 사용하고 데이터베이스를 다운 그레이드합니다.

20

@ 라디 슬라브 nnka에 추가하면됩니다. 나는 처음으로() 아래로 사용하는 데 필요한 때문에, 그것은 작동하도록 좀 시간이 걸렸습니다 :

Update-Database -Target:201407242157114_46 

을 마지막 마이그레이션 (새로운 재료가 추가 된) 47입니다. Here's a nice explanation 데이터베이스를 롤백하고 잘못된 마이그레이션을 제거하는 방법에 대해 설명합니다.

다른 마술사 도제를 도울 수 있기를 바랍니다.