EF核心,Code First Table重命名未检测到迁移定义,Scafolder为空

时间:2017-01-02 08:55:49

标签: ef-code-first migration entity-framework-core

当我更改EF核心中的类名时,我得到了空迁移构建器。

在较旧的EF中,它通常会自动生成重命名表的代码。

但不在EF核心工作

public class EventComment : Comment
{
    [Key]
    public int CommentID { get; set; }

    public int? ParentID { get; set; }
    public virtual EventComment Parent { get; set; }

    public int EventID { get; set; }
    public virtual EventMaster EventMaster { get; set; }

}

public class Comment
{
    public string CommentTitle { get; set; }

    public string CommentDetails { get; set; }

    public int UpVoteCount { get; set; }
    public int DownVoteCount { get; set; }
    public int CommentEmotion { get; set; }

    public string CommentedByID { get; set; }
    public virtual ApplicationUser ApplicationUser { get; set; }
}

现在将EventComment更改为CommentMaster。迁移是空的。

我使用流畅的API进行配置

        builder.Entity<EventComment>()
            .HasOne(e => e.EventMaster)
            .WithMany()
            .HasForeignKey(m => m.EventID);

        builder.Entity<EventComment>()
            .HasOne(e => e.ApplicationUser)
            .WithMany()
            .HasForeignKey(m => m.CommentedByID);

        builder.Entity<EventComment>()
            .HasOne(e => e.Parent)
            .WithMany()
            .HasForeignKey(x => x.ParentID);

1 个答案:

答案 0 :(得分:1)

这是因为EF Core默认表映射convention(突出显示是我的):

  

按照惯例,每个实体将被设置为映射到具有与的表。属性,在派生的上下文中公开实体。如果没有DbSet&lt; TEntity&gt;对于给定的实体,包含,使用类名。

我猜这与以前的EF不同。重要的是,尽管您重命名了实体类,但如果保留旧的Java bug属性名称,则表名称不会更改。