Reputation: 670
How to change name of a join table that EF Core 5 Created ?
for example
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; }
}
and the join table for this 2 entities named FoodMenu, I want to change it to something else..
Upvotes: 32
Views: 14171
Reputation: 9101
The accepted answer is missing an important part I had to struggle with.
First, you need to install the package
Microsoft.EntityFrameworkCore.Relational
Then you can add the following in your OnModelCreating
overridden method
modelBuilder.Entity<Food>()
.HasMany(left => left.Menus)
.WithMany(right => right.Foods)
.UsingEntity(join => join.ToTable("NameYouWish"));
Upvotes: 8
Reputation: 205539
You can use one of the UsingEntity
method overloads, for instance UsingEntity(Action<EntityTypeBuilder>)
.
Since it is a relationship fluent configuration API, you first need HasMany
+ WithMany
pair, e.g.
modelBuilder.Entity<Food>()
.HasMany(left => left.Menus)
.WithMany(right => right.Foods)
.UsingEntity(join => join.ToTable("TheDesiredName"));
Upvotes: 60