1

DB 컨텍스트가 초기화 될 때 특정 엔티티에 대해 테이블 ​​생성을 비활성화하려면 어떻게합니까?EF6의 특정 엔티티에 대한 테이블 생성 금지

public class MyDbContext : DbContext { 
    public DbSet<MyEntity> MyEntity{ get; set; } 

    protected override void OnModelCreating(DbModelBuilder modelBuilder) { 
     modelBuilder.Ignore<MyEntity>(); 
     base.OnModelCreating(modelBuilder); 
    } 
} 

이 코드는 엔티티를 완전히 제외하지만 여전히 쿼리해야합니다.

+1

같은 데이터 주석을 사용하려면? – krish

+0

실제로 기존보기에, 예. – UserControl

답변

1

너무 많은 세부 사항에 들어가기없이, EF는 이전 생성 된 코드로 생성 된 코드를 귀하의 DB 구조를 비교 : 실제로 원시 DB에 모든 시간을 비교하지 않습니다.

새 마이그레이션을 생성하고 UP에서 테이블 생성 코드를 삭제/주석 처리하고 DOWN에서 테이블 제거 코드를 제거하고 빈 마이그레이션을 적용하여 테이블을 생성하려면이 작업을 우회 할 수 있어야합니다. 생성 된 코드에는 여전히 뷰가 있으므로 다시 추가하지는 않습니다.

0

-IgnoreChanges 플래그를 사용하여 첫 번째 마이그레이션으로 빈 마이그레이션을 만들어 Entity Framework에서 기존 데이터베이스의 스냅 숏을 가져올 수 있습니다. 예를 들어 : 마이그레이션을 볼 때

Add-Migration InitialMigration -IgnoreChanges 
0

이 당신의 엔티티를 매핑됩니다 이미 경우

modelBuilder.Entity<entityname>().ToTable("Tablename"); 

테이블 또는 뷰를 기존 또는 그래서 당신은 기존의 테이블에 개체를 매핑하려고하는이

[Table("tablename")] 
public class ClassName { 
.... 
} 
+1

내가 아는 한 기본 명명 규칙 만 덮어 쓸 수 있습니다. – UserControl

관련 문제