📅  最后修改于: 2023-12-03 15:37:41.635000             🧑  作者: Mango
在 EF Core 中,多对多关系你可以使用 Fluent API 来配置。如果你不指定连接表的名字,EF 将使用默认的 schema 名称(通常是模型的名称,如果使用了复数形式,则是它的复数形式),并使用以下名称组合:第一个表的名称、下划线和第二个表的名称。例如,如果我们有 Blog
和 Tag
表,那么连接表的名称将会是 BlogTag
。
你可以通过 Fluent API 的 HasMany()
和 WithMany()
方法来为多对多关系命名连接表。下面是一个示例:
public class Blog
{
public int BlogId { get; set; }
public string Url { get; set; }
public ICollection<BlogTag> BlogTags { get; set; }
}
public class Tag
{
public int TagId { get; set; }
public string Name { get; set; }
public ICollection<BlogTag> BlogTags { get; set; }
}
public class BlogTag
{
public int BlogId { get; set; }
public int TagId { get; set; }
public Blog Blog { get; set; }
public Tag Tag { get; set; }
}
public class BlogContext : DbContext
{
public DbSet<Blog> Blogs { get; set; }
public DbSet<Tag> Tags { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<BlogTag>().HasKey(bt => new { bt.BlogId, bt.TagId });
modelBuilder.Entity<BlogTag>()
.HasOne(bt => bt.Blog)
.WithMany(b => b.BlogTags)
.HasForeignKey(bt => bt.BlogId);
modelBuilder.Entity<BlogTag>()
.HasOne(bt => bt.Tag)
.WithMany(t => t.BlogTags)
.HasForeignKey(bt => bt.TagId);
modelBuilder.Entity<BlogTag>()
.ToTable("BlogTag");
}
}
在上面的示例中,我们使用 ToTable()
方法来为连接表命名,它的参数就是我们想要使用的连接表的名称。在这里,我们将连接表命名为 BlogTag
。
这就是如何在 EF Core 中为多对多关系命名连接表的。希望这篇文章对你有帮助。