#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()
это не учитывает миграции.