Ядро Entity Framework не создает миграцию автоматически - PullRequest
0 голосов
/ 06 мая 2018

Я хотел создать таблицу во время запуска с Entity Framework. У меня есть контекст в отдельном проекте.

Startup.cs в методе: Настройка (приложение IApplicationBuilder)

try
{
    using (var scope = app.ApplicationServices.GetService<IServiceScopeFactory>().CreateScope())
    {
        scope.ServiceProvider.GetRequiredService<MyContext>().Database.Migrate();

    }
}
catch (Exception ex)
{

    throw;
}

Этот кусок кода не создает таблицу.

Однако, когда я пытался создать миграцию с помощью dotnet ef migrations add AddTable_CLient -c MyContext. Таблица создается, но

scope.ServiceProvider.GetRequiredService<MyContext>().Database.Migrate(); не создает таблицу для меня. И это показывает, что таблица уже создана.

public class DesignTimeDbContextFactory: IDesignTimeDbContextFactory<VerittyContext>
{
    public MyContext CreateDbContext(string[] args)
    {

        var builder = new DbContextOptionsBuilder<MyContext>();
        builder.UseSqlServer("Server=localhost;Database=ClientManagement;Trusted_Connection=True;MultipleActiveResultSets=true",
             optionsBuilder => optionsBuilder.MigrationsAssembly(typeof(MyContext).GetTypeInfo().Assembly.GetName().Name));
        return new VerittyContext(builder.Options);

    }
}

MyContext.cs

public DbSet<Company> Company { get; set; }
public DbSet<CompanyContact> CompanyContact { get; set; }

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    foreach (var relationship in modelBuilder.Model.GetEntityTypes().SelectMany(e => e.GetForeignKeys()))
    {
        relationship.DeleteBehavior = DeleteBehavior.Restrict;
    }

    base.OnModelCreating(modelBuilder);
    modelBuilder.Entity<Company>();
    modelBuilder.Entity<CompanyContact>();
 }

Я хотел, чтобы таблица создавалась автоматически при добавлении таблицы в класс Context. Я не хотел добавлять миграцию вручную. Разве использование кода ниже не является способом автоматического добавления таблицы в базу данных?

using (var scope = app.ApplicationServices.GetService<IServiceScopeFactory>().CreateScope())
{
    scope.ServiceProvider.GetRequiredService<MyContext>().Database.Migrate();
}

Пожалуйста, помогите.

...