Entity Framework
데이터베이스 초기화 프로그램
수색…
CreateDatabaseIfNotExists
EntityFramework에서 기본적으로 사용되는 IDatabaseInitializer
구현입니다. 이름에서 알 수 있듯이 데이터베이스가 없으면 데이터베이스가 만들어집니다. 그러나 모델을 변경하면 예외가 발생합니다.
용법:
public class MyContext : DbContext {
public MyContext() {
Database.SetInitializer(new CreateDatabaseIfNotExists<MyContext>());
}
}
DropCreateDatabaseIfModelChanges
이 IDatabaseInitializer
구현은 모델이 자동으로 변경된 경우 데이터베이스를 삭제하고 다시 작성합니다.
용법:
public class MyContext : DbContext {
public MyContext() {
Database.SetInitializer(new DropCreateDatabaseIfModelChanges<MyContext>());
}
}
DropCreateDatabaseAlways
이 IDatabaseInitializer
구현은 응용 프로그램 도메인에서 컨텍스트가 사용될 때마다 데이터베이스를 삭제하고 다시 작성합니다. 데이터 손실은 데이터베이스가 다시 생성된다는 사실 때문에주의하십시오.
용법:
public class MyContext : DbContext {
public MyContext() {
Database.SetInitializer(new DropCreateDatabaseAlways<MyContext>());
}
}
사용자 지정 데이터베이스 초기화 프로그램
IDatabaseInitializer
의 고유 한 구현을 만들 수 있습니다.
예를 들어 초기화 프로그램을 구현하면 데이터베이스를 0으로 마이그레이션 한 다음 최신 마이그레이션으로 마이그레이션합니다 (예 : 통합 테스트 실행시 유용). 그렇게하려면 DbMigrationsConfiguration
유형이 필요합니다.
public class RecreateFromScratch<TContext, TMigrationsConfiguration> :
IDatabaseInitializer<TContext>
where TContext : DbContext
where TMigrationsConfiguration : DbMigrationsConfiguration<TContext>, new()
{
private readonly DbMigrationsConfiguration<TContext> _configuration;
public RecreateFromScratch()
{
_configuration = new TMigrationsConfiguration();
}
public void InitializeDatabase(TContext context)
{
var migrator = new DbMigrator(_configuration);
migrator.Update("0");
migrator.Update();
}
}
MigrateDatabaseToLatestVersion
코드 첫 번째 마이그레이션을 사용하여 데이터베이스를 최신 버전으로 업데이트하는 IDatabaseInitializer
의 구현입니다. 이 이니셜 라이저를 사용하려면 DbMigrationsConfiguration
유형도 사용해야합니다.
용법:
public class MyContext : DbContext {
public MyContext() {
Database.SetInitializer(
new MigrateDatabaseToLatestVersion<MyContext, Configuration>());
}
}
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow