实体框架自动迁移启用无效

5

我有这个数据库配置

public class AppDbContext : DbContext 
    {

         public AppDbContext(string connectionStringOrName)
            : base(connectionStringOrName)
        {
            Database.SetInitializer(new AppDbInitializer());
        }

         public AppDbContext()
             : this("name=AppDbContext")
        {

        }

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

我有这个迁移配置:

public class AppDbInitializer : MigrateDatabaseToLatestVersion<AppDbContext,AppDbMigrationConfiguration>
{
}


  public class AppDbMigrationConfiguration : DbMigrationsConfiguration<AppDbContext>
    { 
        public AppDbMigrationConfiguration()
        {
            AutomaticMigrationsEnabled = true;
            AutomaticMigrationDataLossAllowed = true;
        }

        protected override void Seed(AppDbContext context)
        {
            if (context.Users.Any()) return;

            AddAdmin(context, "Admin", "admin@test.com");
        }
   }

我添加了一个字段到日志实体中。

Entity Framework能否自动检测并应用更改?


这应该做什么?它实际上做了什么? - CodeCaster
你自己尝试过了吗?是不是遇到了一些异常情况?看一下下面这个关于设置EF迁移代码的链接:http://msdn.microsoft.com/nl-nl/data/jj591621.aspx - Jordy van Eijk
1
Entity Framework 什么也不做,这就是问题所在。我知道我可以使用 Up() 和 Down() 函数进行手动迁移。但我想要自动迁移。顺便说一下,我忘了向你展示我如何迁移数据库。 public class AppDbInitializer : MigrateDatabaseToLatestVersion<AppDbContext,AppDbMigrationConfiguration> { } - cihancoskun
虽然您对模型所做的更改不会导致数据丢失,但EF将不会执行任何操作... - Roman
1个回答

0
如果启用了自动迁移,它应该自动检测模型中的任何小更改。
但是对于较大的更改,例如添加新实体,我已经看到需要手动应用迁移,您可以使用 "Add-Migration" 然后运行 "Update-Database"。

自动迁移是在什么时候发生的,确切地说?如果我将“int”更改为“int?”并保存包含该属性的类文件,会发生什么?或者我们是否仍然需要运行“Update-Database”,但不需要先调用“Add-Migration xxx”? - Konrad Viltersten
是的,你说得对。对于小的更改,如果启用了自动迁移,则调用Update-Database将自动添加迁移并更新数据库。 - Bhavjot

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接