2017-10-10 20 views
0

私はasp.netコア2とefコア2でAPIプロジェクトを開発しています。すべてのテーブルを削除してから作成するたびに移行を行っていますが、変更が含まれます。ここでAsp.netコア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();      
    } 
} 

そして、ここでは 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

を編集しますStartup.csで構成する方法です。 TicketingContextをパラメータとして追加します。

public void Configure(IApplicationBuilder app, IHostingEnvironment env, TicketingContext context) 
{ 
    ... 
    context.Database.Migrate(); 
} 
関連する問題