2017-10-10 3 views
0

asp.net 코어 2 및 ef 코어 2를 사용하여 API 프로젝트를 개발하고 있습니다. 모든 테이블을 삭제 한 다음 생성하려고 할 때마다 마이그레이션을 수행하고 있지만 원하는 것은 변경 사항이 포함됩니다.Asp.net Core 2 마이그레이션이 제대로 작동하지 않습니다.

public class TicketingContext : DbContext 
{ 
    public TicketingContext(DbContextOptions<TicketingContext> options) : base(options) 
    { 
     Database.Migrate(); 
    } 

    protected override void OnModelCreating(ModelBuilder modelBuilder) 
    {    
    } 

    public DbSet<User> Users { get; set; } 
    public DbSet<Country> Countries { get; set; }  
    public DbSet<TZone> TZones { get; set; } 
    public DbSet<Company> Companies { get; set; } 
    public DbSet<Point> Points { get; set; } 
    public DbSet<Bus> Buses { get; set; } 

} 

여기 내 시작 클래스이며, DesignTimeDbContextFactory

public class Startup 
{ 
    public Startup(IConfiguration configuration) 
    { 
     Configuration = configuration; 
    } 
    public IConfiguration Configuration { get; } 

    public void ConfigureServices(IServiceCollection services) 
    { 
     services.AddMvc();   
    } 

    public void Configure(IApplicationBuilder app, IHostingEnvironment env, TicketingContext context) 
    { 
     if (env.IsDevelopment()) 
     { 
      app.UseDeveloperExceptionPage(); 
     }   
     app.UseMvc();      
    } 
} 

을 그리고 여기 Startup.cs에 DesignTimeDbContextFactory 구현을

public class DesignTimeDbContextFactory : IDesignTimeDbContextFactory<TicketingContext> 
{ 
    public TicketingContext CreateDbContext(string[] args) 
    { 
     IConfigurationRoot configuration = new ConfigurationBuilder() 
      .SetBasePath(Directory.GetCurrentDirectory()) 
      .AddJsonFile("appsettings.json") 
      .Build(); 

     var builder = new DbContextOptionsBuilder<TicketingContext>(); 

     var connectionString = configuration.GetConnectionString("DefaultConnection"); 

     builder.UseSqlServer(connectionString); 

     return new TicketingContext(builder.Options); 
    } 
} 
+0

어떤 Database.Migrate 메소드가 사용됩니까? – Orhun

+0

자동 마이그레이션에 사용되는 것 같습니다. –

+0

'Startup.cs'도 표시 할 수 있습니까? –

답변

0

편집 구성 방법입니다. TicketingContext를 매개 변수로 추가하십시오.

public void Configure(IApplicationBuilder app, IHostingEnvironment env, TicketingContext context) 
{ 
    ... 
    context.Database.Migrate(); 
} 
관련 문제