기존 데이터베이스에서 Entity Framework 4.3을 사용하고 있으며 몇 가지 시나리오를 준비하고 있습니다.Entity Framework 4.3의 데이터를 점진적으로 시드하는 가장 좋은 방법
첫 번째로 데이터베이스를 삭제하면 EF에서 처음부터 다시 작성하고 싶습니다. CreateDatabaseIfNotExists 데이터베이스 초기화 프로그램을 성공적으로 사용했습니다.
둘째, 모델을 업데이트하고 데이터베이스가 이미 존재하면 데이터베이스가 자동으로 업데이트되기를 원합니다.이 작업을 성공적으로 수행했습니다.
여기 내 질문이 있습니다. 내 모델에 일부 참조 데이터가 필요한 새 테이블을 추가한다고 가정 해 봅시다. 데이터베이스 초기화 도구가 실행될 때 및 마이그레이션이 실행될 때이 데이터가 생성되도록하는 가장 좋은 방법은 무엇입니까? 내 욕망은 처음부터 db를 만들 때 데이터가 생성되고 마이그레이션 실행의 결과로 데이터베이스가 업데이트되는 경우입니다.
일부 EF 마이그레이션 예에서는 마이그레이션의 UP 메서드에서 SQL() 함수를 사용하여 시드 데이터를 만드는 것을 보았지만 가능한 경우 시드 데이터를 만들 때 컨텍스트를 사용합니다. 데이터베이스 이니셜 라이저 예제) EF의 전체 아이디어가 추상화되면 순수 SQL을 사용한다는 것이 나에게 이상한 것처럼 보인다. UP 메서드에서 컨텍스트를 사용하려고했지만 어떤 이유로 테이블에서 호출하기 바로 아래에 시드 데이터를 추가하려고 할 때 마이그레이션에서 만들어진 테이블이 존재하지 않는다고 생각하지 않았습니다.
모든 지혜가 매우 감사하겠습니다.
실제로 Up 메서드에서 컨텍스트를 만들고 AddOrUpdate를 사용하여 행을 삽입 할 수 있습니다. 그러나 마이그레이션 트랜잭션에 래핑되지 않으므로 문제가 발생할 수 있습니다. 또한 모델이 변경 될 때 나중에 컴파일하는 것이 보장되지 않습니다. – Betty
Up 메서드에서 컨텍스트를 만들려고했지만 테이블이 존재하지 않는다는 오류가 발생했습니다. 나는 "Up"방법으로 SQL을 시도 할 것이다. –
@ 라디 슬라브 (Ladislav) EF에 대한 깊이있는 지식은 계속 저를 놀라게합니다. 주제에 관한 책을 저술 해 본 경험이 있거나 흔히 접하게되는 일반적인 오해를 해결해 보았습니까? – kingdango