Привет, я пробую использовать подход 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 ( ) Функция не вызывается.
Спасибо заранее