developer tip

기존 EF Code First 데이터베이스를 처음부터 삭제하고 다시 만드는 방법

optionbox 2020. 10. 31. 09:36
반응형

기존 EF Code First 데이터베이스를 처음부터 삭제하고 다시 만드는 방법


VS 2012에서 EF 5와 함께 EF Code First를 사용하고 있습니다. PM update-database명령을 사용 하고 일부 테이블을 샘플 데이터로 채우는 간단한 시드 방법이 있습니다.

x.mdb를 삭제하고 다시 만들고 싶습니다. 업데이트 기록이 동기화되지 않은 것 같습니다. 내 컨텍스트에서 모든 DBSet을 주석 처리하면 update-database오류없이 실행되지만 DB에 일부 테이블이 남습니다. DB에 귀중한 데이터가 없기 때문에 모든 것을 재설정하는 것이 가장 간단한 것 같습니다.

어떻게하면 되나요?


내가 제대로 이해하고 있다면 ...

원하는 경우 start clean:

1) 수동으로 DB를 삭제하거나 (연결이 정렬되었다고 가정합니다) 비우거나 비우지 만 system __MigrationHistory테이블 이 있으므로 모두 함께 삭제하는 것이 더 쉽고 안전 합니다-제거해야합니다.

2) 아래에 있고 숫자와 같은 이름을 가진 모든migration files 것을 제거하십시오 .- 모두 제거하십시오Migrations .

3) 마이그레이션 (및 나머지)이 포함 된 프로젝트다시 빌드 하고 프로젝트가 자동으로 빌드되도록 설정 (구성)되어 있는지 확인합니다 (때로는 문제를 일으킬 수 있지만 사용자에게는 적합하지 않음).

4) Add-Migration Initial다시 실행 하십시오.Update-Database


명령 Add-Migration "Name_Of_Migration"사용하여 마이그레이션을 만드는 올바른 방법을 작업 한 경우 다음을 수행하여 깔끔하게 시작할 수 있습니다 ( 물론 데이터 손실과 함께 재설정 ).

  1. Update-database -TargetMigration:0

    다운 메소드가 실행되었으므로 일반적으로 DB는 비어 있습니다.

  2. Update-database

    그러면 현재 마이그레이션에 대한 DB가 다시 생성됩니다.


패키지 관리자 콘솔에서 드롭, 생성 및 시드 할 단일 라이너 :

update-database -TargetMigration:0 | update-database -force

카붐.


EntityFrameworkCore의 경우 다음을 사용할 수 있습니다.

Update-Database -Migration 0

이렇게하면 데이터베이스에서 모든 마이그레이션이 제거됩니다. 그런 다음 다음을 사용할 수 있습니다.

Remove-Migration

마이그레이션을 제거하려면. 마지막으로 마이그레이션을 다시 만들어 데이터베이스에 적용 할 수 있습니다.

Add-Migration Initialize
Update-Database

EFCore v2.1.0에서 테스트 됨


어때 ..

static void Main(string[] args)
{
    Database.SetInitializer(new DropCreateDatabaseIfModelChanges<ExampleContext>());  
    // C
    // o
    // d
    // i
    // n
    // g
}

저는 Programming Entity Framework : Code First , Pg 28 First Edition 에서 이것을 선택했습니다 .


이 자습서에 따라 데이터베이스를 만든 경우 : https://msdn.microsoft.com/en-au/data/jj193542.aspx

... 그러면 작동 할 수 있습니다.

  1. 모두 삭제 .mdf.ldf프로젝트 디렉토리에있는 파일을
  2. View / SQL Server 개체 탐색기로 이동하여 (localdb) \ v11.0 하위 노드에서 데이터베이스를 삭제합니다. 참조 https://stackoverflow.com/a/15832184/2279059

다음 단계를 수행하십시오.

  1. 컨텍스트에서 삭제해야하는 개체를 삭제하고 // Dbset<Item> Items{get;set;}Nuget 콘솔에서 다음 명령을 실행합니다.
  2. 추가 마이그레이션 [contextName]
  3. update-database -verbose

컨텍스트에 존재하지 않지만 이미 데이터베이스에 생성 된 테이블을 삭제합니다.


dbctx.Database.EnsureDeleted (); dbctx.Database.EnsureCreated ();

참고URL : https://stackoverflow.com/questions/16035333/how-to-delete-and-recreate-from-scratch-an-existing-ef-code-first-database

반응형