EF6 Migration automati c Миграция не выполняется - PullRequest
1 голос
/ 18 июня 2020

Привет, я пробую использовать подход EF6 Code First. Я понимаю основную c концепцию миграции и то, как работает Code First, но почему-то это не работает. Я сам написал следующий класс миграции не через Add-Migration:

public override void Up()
{
  CreateTable("dbo.Todo", column => new 
  {
    Id = column.Int(nullable:false, identity:true),
    Value = column.String(nullable: true),
    CreatedAt = column.DateTime(nullable: false, defaultValueSql: "GETUTCDATE()")
  }).PrimaryKey(t => t.Id);
}

public override void Down()
{
  DropTable("dbo.Todo");
}

Но метод up не называется My Configuration class выглядит следующим образом:

internal sealed class Configuration : DbMigrationsConfiguration<DataProviderCodeFirst.Entities.TodoContext>
{
    public Configuration()
    {
        AutomaticMigrationsEnabled = true;
        AutomaticMigrationDataLossAllowed = false;
        ContextKey = nameof(TodoContext);
    }

    protected override void Seed(DataProviderCodeFirst.Entities.TodoContext context)
    {
    }
}

Это мой DataContext:

public TodoContext(): base("SomeConnectionString")
{

}

public TodoContext(string connectionString)
  : base(connectionString)
{
  Database.CreateIfNotExists();
  Database.SetInitializer(new MigrateDatabaseToLatestVersion<TodoContext, Configuration>());
  Database.Initialize(false);
}

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
  base.OnModelCreating(modelBuilder);
  modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}


public virtual DbSet<Todo> Todos { get; set; }

Класс моей сущности

  public class Todo
  {


    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }
    [DatabaseGenerated(DatabaseGeneratedOption.Computed)]
    public DateTime CreatedAt { get; set; } = DateTime.Now;

    public string Value { get; set; }

  }

Он создает базу данных и таблицы, для которых установлен ключ, но CreatedAt не настроен на вычисление и в отладке Up ( ) Функция не вызывается.

Спасибо заранее

1 Ответ

0 голосов
/ 18 июня 2020

Вы должны запустить команду Enable-Migration, затем Add-Migration, а затем выполнить команду Update-Database.

...