我想在我的代码中使用自动迁移,但每次我在模型中更改某些内容时,我都需要手动运行update-Database
。我可以自动完成吗?
这是配置:
public class Configuration : DbMigrationsConfiguration<ManualContext>
{
public Configuration()
{
AutomaticMigrationsEnabled = true;
AutomaticMigrationDataLossAllowed = true;
}
...
}
AppActivator
:
[assembly: WebActivator.PreApplicationStartMethod(typeof(AppActivator), "PreStart")]
[assembly: PostApplicationStartMethod(typeof(AppActivator), "PostStart")]
[assembly: ApplicationShutdownMethod(typeof(AppActivator), "Stop")]
namespace Manual.Web
{
public static class AppActivator
{
public static void PreStart()
{
Database.SetInitializer(
new MigrateDatabaseToLatestVersion<ManualContext,Configuration>());
Database.SetInitializer(new ManualDbInitializer());
MeasurementConfig.RegisterUnits();
MiniProfilerPreStart();
}
...
}
和ManualDbInitializer - 用于种子(第一次创建数据库时):
public class ManualDbInitializer : CreateDatabaseIfNotExists<ManualContext>
{
protected override void Seed(ManualContext context)
{
ManualDbInitializerSeed.SeedForDB(context);
}
}
答案 0 :(得分:0)
如果要部署应用程序,则可能希望在应用程序启动时自动升级数据库(通过应用任何挂起的迁移)。您可以通过注册MigrateDatabaseToLatestVersion数据库初始化程序来完成此操作。数据库初始化程序只包含一些逻辑,用于确保正确设置数据库。第一次在应用程序进程(AppDomain)中使用上下文时运行此逻辑。