Как обеспечить автоматическое создание базы данных с помощью entity framework 7?

#c# #entity-framework-core

#c# #entity-framework-core

Вопрос:

Каков наилучший способ обеспечить автоматическое создание базы данных (если она не существует) с помощью EF7? Я читал, что вы не должны вставлять Database.EnsureCreated свой DatabaseContext конструктор, поэтому не уверен, как правильно это подключить.

Вот ConfigureService метод для класса OdeToFood /Startup.cs (asp.net ядро 1.0.1 веб-приложение):

 public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc();
    services.AddSingleton(Configuration);
    services.AddSingleton<IGreeter, Greeter>();
    services.AddScoped<IRestaurantData, SqlRestaurantData>();
    services.AddDbContext<OdeToFoodDbContext>(options => 
        options.UseSqlServer(Configuration.GetConnectionString("OdeToFood")));
    services.AddIdentity<User, IdentityRole>()
            .AddEntityFrameworkStores<OdeToFoodDbContext>();
}

public class OdeToFoodDbContext : IdentityDbContext<User>
{
    public OdeToFoodDbContext(DbContextOptions options) : base(options) { }

    public DbSet<Restaurant> Restaurants { get; set; }
}
  

Комментарии:

1. Найден один способ сделать это. Не уверен, что это лучший способ сделать это. public class OdeToFoodDbContext : IdentityDbContext<User> { public OdeToFoodDbContext(DbContextOptions options) : base(options) { } public void Initialize() { Database.EnsureCreated(); } public DbSet<Restaurant> Restaurants { get; set; } }

2. Используете ли вы EFC, который не называется EF7, во-вторых, вам, вероятно, понадобится функция «Миграции», которая также была частью EF6. _context.Database.Migrate() (также доступна асинхронная версия).

3. Имейте в виду, что Database.EnsureCreated() это не учитывает миграции.