自动迁移和手动调用Update-Database

时间:2014-04-04 12:30:31

标签: c# asp.net-mvc-4 entity-framework-6 automatic-migration

即使我已启用自动迁移,是否必须在程序包管理器控制台中手动发出Update-Database命令?

我正在运行MVC4和EF6。该解决方案针对.NET 4(遗憾的是我无法更改)。

编辑:我知道代码迁移之间的区别,这需要我正确地为现有表种子。这个问题更多地基于我添加一个没有关系的表的情况,我认为它会运行?

编辑2 :应自动添加的表格

============

新表定义

public class InboundFile : Entity
{
    [Required]
    public String FilePath { get; set; }
}

EF配置文件

    public Configuration()
    {
        AutomaticMigrationsEnabled = true;
        AutomaticMigrationDataLossAllowed = true;
        MigrationsDirectory = @"Migrations";
    }

    protected override void Seed(Unifi.Context.DBContext context)
    {
        context.InboundFiles.AddOrUpdate(
            x => x.FilePath,
            new InboundFile { CreateDate = DateTime.Now, ModifiedDate = DateTime.Now, FilePath = "c:/test", IsDeleted = false }
        );
    }

数据库上下文

public class DBContext:DbContext     {

    public DBContext()
        : base("MyConn")
    {

    }

    public DbSet<User> Users { get; set; }

    public DbSet<UserRole> UserRoles { get; set; }

    public DbSet<Region> Regions { get; set; }

    public DbSet<InboundFile> InboundFiles { get; set; }

}

2 个答案:

答案 0 :(得分:2)

尝试将其放入Application_Start

Database.SetInitializer(new MigrateDatabaseToLatestVersion<DbContext, Configuration>);
using (var temp = new DbContext()) {
    temp.Database.Initialize(true);
}

这将强制它在每次应用程序启动时运行update-database,并执行seed

答案 1 :(得分:0)

Update-Database会触发&#34; 更新&#34;操作。您可以运行您的应用程序,数据库将在应用程序启动时更新。

我更喜欢手动运行Update-Database,因为我可以看到是否存在任何数据库迁移错误。