实体框架核心,更新数据库不考虑属性

时间:2019-11-11 10:58:47

标签: c# .net entity-framework-core

我有一个具有某些属性的实体PersonEntity

    public class PersonEntity
    {

        [Required]
        [MaxLength(50)]
        public string FirstName { get; set; }

        [Required]
        [MaxLength(50)]
        public string LastName { get; set; }

        [Key]
        public int Id{ get; set; }
    }

当我执行update-database -verbose时,将生成数据库和表,但不考虑属性。数据库中有FirstNameLastName的varchar(MAX),它可以为空。

我尝试使用流畅的API(我删除了属性)

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<PersonEntity>()
        .ToTable(nameof(this.Customer))
        .HasKey(e => e.Id);

    modelBuilder.Entity<PersonEntity>()
        .Property(t => t.LastName)
        .IsRequired()
        .HasMaxLength(50);

    modelBuilder.Entity<PersonEntity>()
        .Property(t => t.FirstName)
        .IsRequired()
        .HasMaxLength(50);

    base.OnModelCreating(modelBuilder);
}

但结果相同。

知道为什么吗?

谢谢

2 个答案:

答案 0 :(得分:3)

更新数据库:执行由Add-Migration命令创建的最后一个迁移文件,并将更改应用于数据库模式

无论何时更改域类,请使用name参数执行blob:https://web.whatsapp.com/b4fad564-5ff7-4fa3-b7ye-b8575a8f3297 以创建新的迁移文件,然后执行Update-Database命令以将更改应用于数据库架构。 Ref

答案 1 :(得分:0)

每次更改实体时,都需要通过运行Add-Migration重新创建新迁移,以便在运行update-database命令之前应用新迁移。

有关更多详细信息,请参阅此迁移的官方文档:

https://docs.microsoft.com/en-us/ef/core/managing-schemas/migrations/?tabs=vs#customize-migration-code

相关问题