Включенная автоматическая миграция Entity Framework не работает

У меня есть эта конфигурация БД

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", "[email protected]");
        }
   }

И я добавил еще одно поле в объект журнала.

Может ли Entity Framework автоматически обнаруживать и применять изменения?


person cihancoskun    schedule 06.01.2015    source источник
comment
Что это должно делать? Что оно делает?   -  person CodeCaster    schedule 06.01.2015
comment
Что вы пробовали сами, вы получаете какое-то исключение или что? Взгляните на следующую ссылку о настройке кода миграции EF, сначала msdn.microsoft. com/nl-nl/data/jj591621.aspx   -  person Jordy van Eijk    schedule 06.01.2015
comment
Entity Framework ничего не делает. Это проблема. Я знаю, что могу управлять миграцией с помощью функций Up() и Down(). Но я хочу AutoMigration. Кстати, я забыл показать вам, как я мигрирую базу данных. открытый класс AppDbInitializer: MigrateDatabaseToLatestVersion‹AppDbContext,AppDbMigrationConfiguration› { }   -  person cihancoskun    schedule 06.01.2015
comment
Пока ваши изменения в Model не приведут к ПОТЕРЯМ ДАННЫХ, EF ничего не сделает...   -  person Roman    schedule 22.02.2019


Ответы (1)


Если включена автоматическая миграция, она должна автоматически обнаруживать любые небольшие изменения в модели.

Но для более крупных изменений, например добавления нового объекта, я видел, как вручную применить миграцию, что вы можете сделать с помощью «Добавить-миграцию», а затем запустить «Обновление-база данных».

person Bhavjot    schedule 20.01.2016
comment
Когда происходит автоматический перенос точно? Если я изменю int на int? и сохраню файл с классом, содержащим это свойство? Или нам по-прежнему нужно запускать Update-Database, но без необходимости сначала вызывать Add-Migration xxx? - person Konrad Viltersten; 06.08.2016
comment
Да, ты прав. для небольших изменений, а если включена автоматическая миграция, вызов Update-Database автоматически добавит базу данных миграции и обновления. - person Bhavjot; 08.08.2016