Следующая комбинация теперь работает как шарм:
Я включил миграции, но сохранил автоматические c -миграции отключены. (enable-migrations)
Я добавил несколько миграций, некоторые с автоматическим содержимым c, некоторые написаны вручную. (add -igration {name})
В папке Migrations была создана Конфигурация, которую я изменил, чтобы она выглядела следующим образом:
internal sealed class Configuration : DbMigrationsConfiguration<MyDbContext>
{
public Configuration()
{
AutomaticMigrationsEnabled = false;
AutomaticMigrationDataLossAllowed = false;
ContextKey = "MyDbContext";
}
protected override void Seed(StratonLocalizerDatabase context)
{
// This method will be called after migrating to the latest version.
// You can use the DbSet<T>.AddOrUpdate() helper extension method
// to avoid creating duplicate seed data.
}
}
И конструктор для моего DbContext выглядит следующим образом :
public class MyDbContext: DbContext
{
[Obsolete("This constructor should never be used directly, and is only needed to generate entityframework stuff. Connection string can be adapted as pleased.")]
public MyDbContext() : base(@"Server=MyServer\Instance;Database=MyDatabase;Trusted_Connection=True;")
{
}
public MyDbContext(string connectionString) : base(connectionString)
{
Database.CreateIfNotExists();
Database.SetInitializer(new MigrateDatabaseToLatestVersion<StratonLocalizerDatabase, Migrations.Configuration>());
Database.Initialize(false);
}
Первый конструктор используется только для генерации вещей и создания миграций. Для этих действий нужна фактическая база данных, поэтому я просто оставил там строку подключения для своей базы данных.
Второй - тот, который следует использовать в полевых условиях, и он обновит базу данных до последней версии, независимо от того, был ли я когда-либо подключен к этой базе данных ранее, или если база данных просто старая. Я еще не проверял, будет ли он на самом деле создавать новую базу данных, если она не существует, это не мой вариант использования, но я подумал, что это может быть полезно для вас, ребята, поэтому я сохранил строку.
Используемая версия Entity Framework: EF6, версия пакета NuGet 6.4.0 с EntityFrameworkExtras.EF6, версия пакета NuGet 1.0.0