Я написал модели и класс контекста, успешно выполнил начальную миграцию, посеял и сгенерировал локальную базу данных на моей машине.Проблема в том, что я работаю над совместным проектом в университете с использованием Github, а файл .gitignore
игнорирует файлы .mdf
(по понятным причинам).
Мой вопрос: есть ли способ автоматически генерировать и заполнять файл базы данных .mdf
SQL Server при запуске приложения, если он не существует в папке App_Data
?
Мой класс контекста выглядит так:
public class ABFContext : DbContext
{
public ABFContext() : base("ABFDatabase")
{
Database.SetInitializer(new CreateDatabaseIfNotExists<ABFContext>());
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}
public DbSet<BasketItem> BasketItems { get; set; }
public DbSet<Catalogue> Catalogues { get; set; }
// other entities omitted for clarity
}
Строка подключения выглядит так:
<connectionStrings>
<add name="DefaultConnection"
connectionString="Data Source=(LocalDb)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\aspnet-ABF-20190304080703.mdf;Initial Catalog=aspnet-ABF-20190304080703;Integrated Security=True"
providerName="System.Data.SqlClient" />
</connectionStrings>
Конфигурация миграции с начальными данными:
internal sealed class Configuration : DbMigrationsConfiguration<ABF.DAL.ABFContext>
{
public Configuration()
{
AutomaticMigrationsEnabled = false;
}
protected override void Seed(ABF.DAL.ABFContext context)
{
context.CustomerRoles.AddOrUpdate(x => x.Id,
new CustomerRole() { Id = 1, Role = "Member - Current" },
new CustomerRole() { Id = 2, Role = "Member - Previous" },
new CustomerRole() { Id = 3, Role = "Customer" },
new CustomerRole() { Id = 4, Role = "Sponsor" },
new CustomerRole() { Id = 5, Role = "Staff/Volunteer" }
);
// other seed data omitted for clarity
}
}