我想在我的代码中使用自动迁移,但是每次更改模型后,都需要手动运行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);
}
}
ManualDbInitializer()
是什么?您在MigrateDatabaseToLatestVersion<ManualContext, Configuration>()
后设置它。 - MasoudManualDbInitializer
是CreateDatabaseIfNotExists
,所以你正在将Database
初始化器设置为CreateDatabaseIfNotExists
而不是MigrateDatabaseToLatestVersion
。将你的Seed()
方法移动到你的Configuration
类中。 - Masoud