当我更改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);
答案 0 :(得分:1)
这是因为EF Core默认表映射convention(突出显示是我的):
按照惯例,每个实体将被设置为映射到具有与
的表。属性,在派生的上下文中公开实体。如果没有DbSet&lt; TEntity&gt;对于给定的实体,包含,使用类名。
我猜这与以前的EF不同。重要的是,尽管您重命名了实体类,但如果保留旧的Java bug
属性名称,则表名称不会更改。