У меня есть консольное приложение , которое взаимодействует с базой данных с помощью EF. Ядро. У меня есть DBContext, который выглядит следующим образом.
class HRDepartmentContext : DbContext
{
public DbSet<Employee> Employee { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder options)
=> options.UseSqlite("Data Source=somepath\\employees.db");
}
Он используется в классе, который выглядит следующим образом.
class EmployeeManager
{
public CreateEmployee(string firstname, string lastname)
{
using (var db = new EmployeeContext())
{
db.Database.EnsureCreated();
// logic for employee creation
}
}
// other methods for delete/update the employees
public UpdateEmployee(...) {...}
public DeleteEmployee(...) {...}
}
Мои вопросы.
a) Что такое лучший способ вызова метода EnsureCreated , поскольку я не хочу вызывать его в отдельных методах Create / Update / Delete Employee.
б) Как лучше всего обрабатывать изменения схемы сценария ios в будущих версиях приложения? Читая документацию, она не выглядит так: EsureCreated сможет справиться со сценарием. Очевидно, что обновление схемы должно выполняться без потери существующих данных.
ОБНОВЛЕНИЕ: Я хочу избегать использования любых командных строк EF для миграции в случае изменений схемы. Я предпочитаю код для обработки.