У меня проблема с выполнением миграции с использованием DbMigrator, так как классы миграции не выполняются и, конечно, не отражают в базе данных.Entity Framework - DbMigrator не выполняет классы миграции
То, что я пытаюсь реализовать, - это групповые миграции в версии. В основном у меня есть базовый класс версии, в котором все версии получены.
Например, у меня есть класс Version1000, который соответствует версии 1.0.0.0.
В классах версий есть метод, называемый ExecuteMigrations, который отвечает за выполнение миграций, связанных с версией, которой он соответствует.
Вот пример класса версии (Version1000 for 1.0.0.0), см. Метод ExecuteMigrations с использованием DbMigrator, он также использует класс VersionConfiguration, который происходит из DbMigrationsConfiguration, он находится там, где я устанавливаю пространства имен, каталог, ContextType .. и т.д ..
public class Version1000 : Version
{
public override string VersionNumber
{
get { return "1.0.0.0"; }
}
public static Version Version
{
get
{
return new Version1000();
}
}
public override void ExecuteMigrations()
{
var configuration = new VersionConfiguration();
configuration.TargetDatabase = new DbConnectionInfo(MyCustomContext.CONTEXT_CONNECTION_STRING_NAME);
var migrator = new DbMigrator(configuration);
migrator.Update();
}
}
VersionConfiguration Класс
class VersionConfiguration : DbMigrationsConfiguration<MyCustomContext>
{
public VersionConfiguration()
{
AutomaticMigrationsEnabled = false;
MigrationsNamespace = "Some.Namespace._1000";
MigrationsDirectory = "Migration\\1000";
ContextType = typeof(MyCustomContext);
}
protected override void Seed(MyCustomContext context)
{
base.Seed(context);
}
}
При запуске приложения моего приложения, что я делаю, это проверить текущую версию моей базы данных, а затем применить варианты, которые не t применяется к текущей базе данных. Это делается путем вызова метода ExecuteMigrations класса версии.
Дело в том, что я не получаю никаких исключений, только что изменения не отражаются в базе данных при вызове метода DbMigrator.Update и классов миграции в пространстве имен/имен, установленном в DbMigrationsConfiguration, где никогда казнены.
Тип приложения: ASP.NET MVC 4 .NET Framework: 4,5
У меня есть классы миграции, которые происходят из DbMigration и да, там есть инструкции, которые создают таблицы так же, как в вашем примере. Если вы попытались просмотреть пользовательскую конфигурацию DBMigrationsConfiguration (VersionConfiguration), в ней будет указано пространство имен классов миграции и папка, в которой оно расположено, но каким-то образом его не выполняется. – mdcuesta