기존 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"
을 사용하여 마이그레이션을 만드는 올바른 방법을 작업 한 경우 다음을 수행하여 깔끔하게 시작할 수 있습니다 ( 물론 데이터 손실과 함께 재설정 ).
Update-database -TargetMigration:0
다운 메소드가 실행되었으므로 일반적으로 DB는 비어 있습니다.
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
... 그러면 작동 할 수 있습니다.
- 모두 삭제
.mdf
및.ldf
프로젝트 디렉토리에있는 파일을 - View / SQL Server 개체 탐색기로 이동하여 (localdb) \ v11.0 하위 노드에서 데이터베이스를 삭제합니다. 참조 https://stackoverflow.com/a/15832184/2279059
다음 단계를 수행하십시오.
- 컨텍스트에서 삭제해야하는 개체를 삭제하고 //
Dbset<Item> Items{get;set;}
Nuget 콘솔에서 다음 명령을 실행합니다. - 추가 마이그레이션 [contextName]
- update-database -verbose
컨텍스트에 존재하지 않지만 이미 데이터베이스에 생성 된 테이블을 삭제합니다.
dbctx.Database.EnsureDeleted (); dbctx.Database.EnsureCreated ();
'developer tip' 카테고리의 다른 글
LESS로 부트 스트랩 변수 재정의 (0) | 2020.10.31 |
---|---|
C #에서 가장 높은 배열 값 및 인덱스 찾기 (0) | 2020.10.31 |
Vagrant가 VM을 프로비저닝하는 데 사용하는 Chef 버전을 제어하는 방법은 무엇입니까? (0) | 2020.10.31 |
백그라운드에서 새 탭을여시겠습니까? (0) | 2020.10.30 |
“python setup.py test”에서 unittest discover를 실행하는 방법은 무엇입니까? (0) | 2020.10.30 |