답변

0

아니요, 이름에서 알 수있는 것처럼 전체 데이터베이스를 삭제하기 때문에 테이블을 제외 할 방법이 없습니다. 당신이 당신의 데이터를 다시 삽입하기 위해 intializer에서 상속 종자 메소드를 오버라이드 (override) 할 수 그러나

:

public class MyInitializer : DropCreateDatabaseIfModelChanges<MyContext> 
{ 
    protected override void Seed(MyContext context) 
    { 
     //insert data to tables through context 
    } 
} 

당신이 원하는 경우, 직접 같은 IDatabaseInitializer<TContext>를 구현해야 더 복잡한 일 :

public class MyComplexInitializer : IDatabaseInitializer<MyContext> 
{ 
    public void InitializeDatabase(MyContext context) 
    { 
     if (context.Database.Exists()) 
     { 
      if (context.Database.CompatibleWithModel(true)) 
       return; 
      //do something bofore delete 
      context.Database.Delete(); 
     } 
     context.Database.Create(); 
     //add some data to context 
     context.SaveChanges();     
    } 
} 
+0

을 나는 그와 비슷한 것을 가지고 있으며, 씨앗의 끝 부분에 나는 문맥을 가지고 있습니다 .SaveChanges(); 하지만 table/db를 어디에 드롭하도록 지정해야합니까? – Nir

+0

모델이 변경 될 때'DropCreateDatabaseIfModelChanges'에서 상속했다면 DB를 자동으로 삭제합니다; 모든 테이블을 다시 만든다. 'Seed' 메소드를 호출합니다. app start에서 Database.SetInitializer (new MyInitializer());)로 초기 값을 설정한다는 점을 제외하면 추가적인 설정은 필요 없습니다. – nemesv

+0

사전 드롭 데이터베이스 방법이 있습니까? – Nir

0

전체 데이터베이스를 삭제하지 않는 것이 그 역할입니다. 내가 보관하려는 테이블을 제외하고 모든 테이블에 대해 명시 적으로 DROP 쿼리를 실행하는 자신 만의 롤을 만들 수 있다고 상상해보십시오.

관련 문제