我在使用 DbMigrator 执行迁移时遇到问题,不知何故迁移类没有执行,当然也没有反映在数据库中。
我要实现的是将我的迁移分组到版本。基本上我有一个 Version 基类,其中所有版本都派生自。
例如,我有一个对应于版本 1.0.0.0 的类 Version1000。
版本类有一个名为 ExecuteMigrations 的方法,它负责执行与其对应的版本相关的迁移。
这是版本类的示例(1.0.0.0 的版本 1000),请参阅使用 DbMigrator 的 ExecuteMigrations 方法,它还使用派生自 DbMigrationsConfiguration 的 VersionConfiguration 类,它在那里我设置命名空间、目录、ContextType.. ETC..
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();
}
}
版本配置类
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);
}
}
在我的应用程序的应用程序启动时,我所做的是检查我的数据库的当前版本,然后应用未应用于当前数据库的版本。这是通过调用版本类的 ExecuteMigrations 方法来完成的。
问题是我没有得到任何异常,只是当调用 DbMigrator.Update 方法时更改不会反映到数据库中,并且在 DbMigrationsConfiguration 中设置的文件夹/命名空间中的迁移类从未执行过。
应用程序类型:ASP.NET MVC 4 .NET 框架:4.5