我在EF Core中更改类名时会获得空迁移构建器。
在较旧的EFS中,它通常会自动生成用于重命名表的代码。
,但在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; }
}
现在将事件收费更改为评论员。迁移是空的。
我使用Fluent 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);
这是因为EF核心默认表映射约定(亮点是我的):
按照惯例,将设置每个实体,以将>与DBSET> tentity>属性>属性>属性相同的名称映射到表格上。如果 no dbset&lt; tentity>为给定实体包括,则使用类名称。
我想这与以前的EF不同。必不可少的部分是,尽管您重命名了实体类,但是如果保留旧的DbSet
属性名称,则表名不会更改。