更改生成的连接名称 table(多对多)- EF Core 5

Change name of generated Join table ( Many to Many ) - EF Core 5

如何更改 EF Core 5 创建的连接 table 的名称?

例如

 public class Food 
    {
        public int FoodId { get; set; }
        public string Name { get; set; }
        public string Description { get; set; }
        public string Ingredients { get; set; }
        public string PhotoPath { get; set; }
        public ICollection<Menu> Menus { get; set; }
    }

  public class Menu
    {
        public int MenuId { get; set; }
        [Column(TypeName = "date")]
        public DateTime MenuDate { get; set; }
        public bool IsPublished { get; set; }
        public ICollection<Food> Foods { get; set; }
    }

和这 2 个名为 FoodMenu 的实体的连接 table,我想将其更改为其他名称..

您可以使用 UsingEntity method overloads, for instance UsingEntity(Action<EntityTypeBuilder>) 之一。

由于是关系流畅配置API,你首先需要HasMany + WithMany对,例如

modelBuilder.Entity<Food>()
    .HasMany(left => left.Menus)
    .WithMany(right => right.Foods)
    .UsingEntity(join => join.ToTable("TheDesiredName"));
   

被接受的答案遗漏了一个我不得不努力解决的重要部分。

首先,您需要安装软件包

Microsoft.EntityFrameworkCore.Relational

然后你可以在你的 OnModelCreating 覆盖方法中添加以下内容

modelBuilder.Entity<Food>()
    .HasMany(left => left.Menus)
    .WithMany(right => right.Foods)
    .UsingEntity(join => join.ToTable("NameYouWish"));